ورود

View Full Version : سوال: سوال در رابطه با ارسال آبجکت از کنترلر به ویو



kamran_14
سه شنبه 27 بهمن 1394, 16:18 عصر
سلام
میشه این کد رو که در view نوشته میشه توضیح بدین؟
کلمه کلیدی model آیا مثل using درکنترلر برای اضافه کردن کتابخونه است؟
Model بعدی که اولش با حرف بزرگ نوشته میشه چی کار میکنه؟

model mehrdadNaderi.ViewModels.myViewModel<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>index</title>
</head>
<body>
<div>
userName : @Model.userProfile.userName
<br />
password : @Model.userProfile.password
<br />
active? : @Model.userProfile.userIsActive
<br />
m2: @Model.product.p
</div>
</body>
</html>

hakim22
چهارشنبه 28 بهمن 1394, 06:02 صبح
در هر ویویی که بار Razor ساخته میشه شما میتوانید فقط یک مدل تعریف کنید. برای تعریف مدل در بالا از عبارت model با حروف کوچک استفاده میشه.

هر وقت میخواهید از این مدل استفاده کنید باید از مدل Model استفاده کنید.

در واقع model اول یک Lamdba Expression است که بعدا می توانید به صورت مقدار ورودی به Html Helper بدید.
و مدل دوم یک نمونه (Instance) از کلاسی هست که قبلا در بالا با model (با حروف کوچک) تعریف کردید.

کل این قضیه یک قرارداد در ASP MVC است و کمک میکند برنامه نویسی راحت ترشود. شما میتوانید بجای model از ViewBag یا ViewData و TempData و ... هم استفاده کنید


دقت کنید که مقدار ورودی در Helper ها Expression از نوع Func هست. مثلا DisplayNameFor :



public static MvcHtmlString DisplayNameFor<TModel, TValue>(
this HtmlHelper<IEnumerable<TModel>> html,
Expression<Func<TModel, TValue>> expression
)



دلیلش هم اینه که با این روش امکان خطایابی و تحلیل باگ قبل از کامپایل وجود داره. مقدار ورودی به Helper میتونی هر فیلدی با هر توعی و هر اسمی باشه.

یا باید از string استفاده میشد یا از یک Expression که دست برنامه نویس در مقدار ورودی باز باشه.