首页 > 后端开发 > C++ > 如何在 HttpPost 期间有效地将列表绑定到 ASP.NET MVC 4 中的视图?

如何在 HttpPost 期间有效地将列表绑定到 ASP.NET MVC 4 中的视图?

Barbara Streisand
发布: 2024-12-27 21:03:13
原创
937 人浏览过

How Can I Effectively Bind a List to a View in ASP.NET MVC 4 During HttpPost?

模型绑定到 MVC 4 中的列表

尝试将项目的 IList 绑定到 MVC 4 中的视图时,可能会出现问题在 HttpPost 期间。为了应对这一挑战,请考虑以下模式:

ViewModel:

创建一个包含项目 IList 的 ViewModel:

public class MyViewModel
{
   public List<Person> Persons{get;set;}
}
登录后复制

View:

在视图中,迭代IList并生成每个属性的表单输入:

@model MyViewModel

@for( int i = 0; i < Model.Persons.Count(); ++i)
{
    @Html.HiddenFor(m => m.Persons[i].PersonId)
    @Html.EditorFor(m => m.Persons[i].FirstName) 
    @Html.EditorFor(m => m.Persons[i].LastName)         
}
登录后复制

操作:

在操作方法中,处理发布的 MyViewModel对象:

[HttpPost]public ViewResult(MyViewModel vm)
{
...
}
登录后复制

注意事项:

  • 只有视图中具有相应输入的属性才会在 HttpPost 上具有值。
  • MVC 的模型绑定仅适用于连续的 ID。如果您有条件地隐藏项目,数据可能无法正确绑定。
  • 要解决 ID 间隙问题,请考虑使用以下解决方案:
@for( int i = 0; i < Model.Persons.Count(); ++i)
{
    @Html.Hidden($"Persons[{i}].PersonId", Model.Persons[i].PersonId)
    @Html.Editor($"Persons[{i}].FirstName", Model.Persons[i].FirstName) 
    @Html.Editor($"Persons[{i}].LastName", Model.Persons[i].LastName)           
}
登录后复制

以上是如何在 HttpPost 期间有效地将列表绑定到 ASP.NET MVC 4 中的视图?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板