【问题标题】:Is it possible to use Lambda with model of List<ViewModel>?是否可以将 Lambda 与 List<ViewModel> 的模型一起使用?
【发布时间】:2015-03-06 13:52:36
【问题描述】:

当模型是 List 类型时,我们如何使用 lambda?

@model List<ViewModels.MyModel>

这不适用于 EditorFor

@Html.EditorFor(m=>m.FirstOrDefault().Value)

如何将模型与 EditorFor 绑定?

【问题讨论】:

    标签: asp.net-mvc mvvm lambda editorfor


    【解决方案1】:

    您已对其进行迭代并按集合进行索引:

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

    【讨论】:

    • 成功了。当我在浏览器上检查元素时,我注意到 id 没有分配给控件,它的名称是 [0].Value。您认为为什么会发生这种情况?
    • @Jude 你说的是哪个id?
    • &lt;input&gt; 的 ID,由 EditorFor 创建。
    • @Jude 当我们的模型是集合名称时,必须索引以便发布
    • @Jude 这是集合与模型绑定的方式,请参阅:haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx
    【解决方案2】:

    下面的完整示例:

    您的控制器代码:

    public class ModelValue
    {
       public int ID { get; set; }
       public string Name { get; set; }
    } 
    
    public class TestController : Controller
    {
       public ActionResult Index()
       {
          List<ModelValue> model = new List<ModelValue>();
          for (int i = 0; i < 12; i++)
          {
             model.Add(new ModelValue { ID = i, Name = "Name " + i.ToString()  });
          }
    
          return View(model);
       }
    
       [HttpPost]
       public ActionResult Index(List<ModelValue> model)
       {
          return View(model);
       }
    }
    

    您的查看代码:

    @model List<MVCApp.Controllers.ModelValue>
    
    @using (Html.BeginForm())
    {
       for (int i = 0; i < Model.Count; i++)
       {
          @Html.EditorFor(modelitem => Model[i].ID)
          @Html.EditorFor(modelitem => Model[i].Name)
          <br />
       }
       <button type="submit">Go</button>
    }
    

    【讨论】:

      猜你喜欢
      • 2016-02-28
      • 2012-10-31
      • 2013-02-27
      • 2021-10-22
      • 2016-02-25
      • 1970-01-01
      • 2021-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多