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帮助程序接受这个?

谢谢!

asp.net视图语法和html助手

一个视图可以有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" } })

将正常工作