我只是想知道" For"在.LabelFor或.dditorFor中的mvc html助手扩展意味着什么?我理解参数接受一个lambda表达式,但我不能弄清楚" For"装置
这是我的简单cshtml文件,因此您可以看到我正在查看的内容
@model MvcTest.Models.Update
@{
ViewBag.Title = "Edit";
}
<h1>Update</h1>
@using (Html.BeginForm()) {
@Html.ValidationSummary()
<fieldset>
<legend>Update profile</legend>
@Html.HiddenFor(model => model.ID)
<div class="editor-label">
@Html.LabelFor(model => model.Title)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Title)
</div>
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
}
答案 0 :(得分:4)
Html.LabeFor()返回HTML标签元素以及由指定表达式表示的属性的属性名称。
对于表示在强类型视图中将控件与特定的模型属性绑定。
我的模型只有两个属性。
public class MyModel
{
public string Name {get;set;}
public int Id { get; set;}
}
现在我们创建一个强类型的视图:
@model AppNameSpace.Models.MyModel
@using (Html.BeginForm("MyAction","My",FormMethod.Post))
{
@Html.TextBoxFor(m=>m.Name)
@Html.HiddenFor(m=>m.Id)
<input type="submit" name="Save" value="Save"/>
}
现在,在from模型对象中将发布模型属性中表单元素的值。
public class MyController : Controller
{
[HttpGet]
public Action Result SomeAction()
{
return View();
}
[HttpPost]
public Action Result SomeAction(MyModel model)
{
string name = model.Name;// here you will have name value which was entered in textbox
return View();
}
}
如果我说:
Html.TextBoxFor(x=>x.Name)
现在当from将在带有模型的操作中发布时,文本框值将在Name
属性中发布,无论我们在文本框中输入了什么。这就是强类型视图在asp.net mvc中的工作方式。
其他 Html帮助的情况也是如此,Html.LabelFor()
,Html.HiddenFor
它们主要用于强类型视图,以反映行动中元素的值模型的形式。
有关进一步详细研究的信息,您可以在此处阅读有关Html助手的更多信息:
http://stephenwalther.com/archive/2009/03/03/chapter-6-understanding-html-helpers
http://www.dotnet-tricks.com/Tutorial/mvc/N50P050314-Understanding-HTML-Helpers-in-ASP.NET-MVC.html
https://www.simple-talk.com/dotnet/asp.net/writing-custom-html-helpers-for-asp.net-mvc/
答案 1 :(得分:1)
for指的是您正在创建它的属性。 @Html.LabelFor(model => model.Title)
是模型上Title
字段的标签。更具体地说,它是您提供的Expression。