c# - 带有集合的 Razor 表单助手,如何正确命名表单元素?

标签 c# .net asp.net-mvc razor form-helpers

我有一个经理注册的页面,在恢复期间他们可以添加 o 3 个用户。

用户表单是部分的。

View 模型有一组用户:

public class ManagerRegistrationViewModel
{
  public List<User> Users {get; set;}

  public ManagerRegistrationViewModel()
  {
      Users = new List<User>();
      Users.Add(new User(....));
      Users.Add(new User(....));
      Users.Add(new User(....));
  }
}

public ActionResult  ManagerRegistration()
{
   var vm = new ManagerRegistrationViewModel();

   return View("ManagerRegistration", vm);
}

ManagerRegistration.cshtml:

@using (Html.BeginForm())
{

<div id="users">
    @{  Html.RenderPartial("_User", Model.Users[0]); }
    @{  Html.RenderPartial("_User", Model.Users[1]); }
    @{  Html.RenderPartial("_User", Model.Users[2]); }
</div>


}

我的问题是,部分而言,我目前没有使用 Html 助手。

例如,文本输入看起来像:

<input type=text name="Users[0].Name" />

但我想对文本框和下拉列表等使用 Html 助手,因为对于编辑页面,它设置表单元素的当前值/状态。

如何在这种情况下使用 Html 助手?

表单元素必须命名为:

Users[x].Property

理想情况下,我希望以某种方式继续使用强类型方式,例如:

@Html.TextBoxFor(m => m.Name)

最佳答案

对于这些情况,您应该使用 EditorTemplates 而不是 部分 View ,否则您将无法在您的字段上获得任何正确的命名。

所以你会:

@Html.EditorFor(m => m.Users[0])
@Html.EditorFor(m => m.Users[1])
@Html.EditorFor(m => m.Users[2])

或者更恰本地说,在 for 循环中:

@for (int i = 0; i < Model.Users.Count; i++)
{
    @Html.EditorFor(m => m.Users[i])  
}

关于c# - 带有集合的 Razor 表单助手,如何正确命名表单元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29800839/

相关文章:

c# - 使用简单注入(inject)器的更新数据库,没有 services.AddDbContext<>()

c# - 获取隔离 StorageException : Operation not permitted on IsolatedStorageFileStream

.net - 适用于 Windows 窗体的 Windows 7 MultiTouch .NET API

c# - NMock3 如何模拟没有参数的方法?

c# - 如何在listview中绑定(bind)listviewitem的内容?

c# - 为什么 1/1/1900 会被插入到 SQL 中?在某些情况下它可以替代 NULL 吗?

C# .Net 协方差 - 为了旧时的缘故再次出现?

.net - 用于生成 .net 代理的优秀库

asp.net-mvc - Controller 内的 GetLocalResourceObject

c# - 值不能为空。参数名称: entity