ورود

View Full Version : سوال: 2 سوال درباره فرمی که با استفاده از روش MVC5 Contoroler With views/ using Entityframework ساخته شده



r4hgozar
شنبه 28 تیر 1393, 14:57 عصر
می خواستم بدونم چرا وقتی خودم کد می نویسم و کنترل رو می سازم این کد ها رو نمی نویسم اما درست هم کار می کنه.
اما با روش بالا که خودش برای کنترل و ویو رو می سازه کد های زیر رو میزاره؟

public ActionResult Details(Guid? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest); /// این خط کد یعنی چی؟؟ و چی کار می کنه؟
}
Posts posts = db.Postses.Find(id);
if (posts == null)
{
return HttpNotFound();/// این خط کد یعنی چی؟؟ و چی کار می کنه؟
}
return View(posts);
}




و

public ActionResult Create([Bind(Include="ID,Title,Text")] Posts posts)// چرا از bind استفاده می کنه؟؟؟
,

hakim22
شنبه 28 تیر 1393, 15:27 عصر
دستور HttpStatusCodeResult کد وضعیت پیام Http رو به بروزر کاربر برگشت میشده. استاندارد اینه که همیشه باید این کد رو به کاربر برگردانید. اما عملا خیلی وقتها پیاده سازی نمیشود. مثلا پیام 404 یعنی صفحه یافت نشد. یا 500 یعنی خطای سرور و ...

دستور HttpNotFound هم همون بالایی هست فقط مستقیما 404 رو به کاربر بر میگردونه ، ضمن اینکه صفحه ی مربوط به Error 404 را که در Web.config تنظیم کرده اید رو به کاربر نمایش میده.

از دستور Bind زمانی استفاده میشه که شما همه ی فیلدهایی که از کاربر دریافت می کنید را نمیخواهید. ممکن است مدل پست شامل 10 فیلد باشد ولی برای شما فقط همین 3 فیلد در اینجا لازم باشد. دریافت اطلاعاتی که نیازی به آن ندارید یک حفره ی امنیتی ایجاد میکند. هکر ها با ابزار زیادی می توانند اطلاعات فرم ارسالی به سرور را تغییر دهند و این میتواند مخرب باشد.

روش بهتر این است که همیشه از ViewModel برای کارهای مختلف استفاده کنید و هیچوقت فیلدهایی که لازم نیست را به کاربر ارسال و دریافت نکنید. کمترین ضررش اینه که هکرها می توانند ساختار بانک اطلاعاتی شما را به راحتی کشف کنند که کمک بزرگی به آنها می کند.