asp.net视图语法和html助手
本文关键字:html 助手 图语法 net 视图 asp | 更新日期: 2023-09-27 18:25:54
这实际上是两个问题合一。
第一个问题是关于以下内容:
<div class="form-group">
@Html.LabelFor(model => model.xxx, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.xxx , new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.xxx, "", new { @class = "text-danger" })
</div>
</div>
我不明白model => model.xxx
的意思,我知道它在做什么,但我不知道如何解释语法。
第二个问题是,例如,如果我有
foreach (var item in Model)
我如何更换
@Html.EditorFor(model => model.xxx , new { htmlAttributes = new { @class = "form-control" } })
带有
@Html.EditorFor(item.stringProperty , new { htmlAttributes = new { @class = "form-control" } })
当我尝试这个时,它会给我错误,是否有一个重载的EditorFor帮助程序接受这个?
谢谢!
一个视图可以有0或1个Model,它是从控制器发送的。
public class Person
{
public string Name {get;set;}
public int Age {get;set;}
}
public ViewResult Index()
{
Person p = new Person() { Name = "P1", Age = 100};
return View(p);//
}
如果您的视图名称为"索引",则您可以使用第二种视图方式,其中包含2个参数:CCD_ 5和CCD_ 6
return View("Index", model: p);
那么在你的View
中,你可以使用model
,如果它已经实现了:
@model Person//and remember about namespace
@
{
...
}
@using(Html.BeginForm("ActionName", "controllerName", FormMethod.Post))
{
@Html.EditorFor(model => model.Name); // it create input, check in F12 in your browse - then you can exactly understand.
}
如果你想为项目创建编辑器,你必须使用:
@Html.TextBox("YourName")
例如:
@using(Html.BeginForm("Action", "controller")
{
@Html.TextBox("YourName")
<input type="submit" value="ok"/>
}
以及在您的controller
控制器中:
public ViewResult Action(string YourName)
{
//here you got value for string YourName
return View();
}
这里有有用的答案:ASP.NET MVC获取文本框输入值
编辑,准确回答问题(包含在问题下方的评论中):
我有一个列表,我想为列表中的每个项目显示一个输入文本框,但我希望每个文本框在创建时都有文本,列表中每个项目的文本(来自项目的属性)
@foreach(var item in Model)
@using(Html.BeginForm("MyMethod", "Controller"))
{
@Html.TextBox("item", item)
<input type="submit" value="ok" />
}
并在控制器中添加MyMethod
:
[HttpPost]
public ViewResult MyMethod(string item)
{
...
}
或
[HttpPost]
public ViewResult MyMethod(int item) //if it's an int
{
...
}
如果你想拥有更好的安全页面,请阅读Html.AntiForgeryToken
:http://msdn.microsoft.com/en-us/library/dd470175(v=vs.118).aspx
@using(Html...())
{
@Html.AntiForgeryToken()
(...)
}
我知道你已经得到了第一个问题的答案。
对于第二个,我认为
@Html.EditorFor(item => item.stringProperty , new { htmlAttributes = new { @class = "form-control" } })
将正常工作