wh1*_*p3r 7 asp.net-core-mvc asp.net-core
我想问一下,如何在Asp.NET Core MVC中绑定一个数组?
<input type="text" asp-for="Requests[@index].Name" />
Run Code Online (Sandbox Code Playgroud)
它在旧版本的ASP MVC中运行良好.此示例显示"内部服务器错误".
" 在编译处理此请求所需的资源期间发生错误.请查看以下特定错误详细信息并适当修改源代码. "
ViewModel类示例:
public class ViewModel
{
public List<Model> Requests {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
模型类示例:
public class Model
{
public string Name {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
它应该如何工作?提交带有这些输入的表单后,MVC应自动在ModelView中创建并映射列表.这就是它在ASP.NET MVC 4中的工作方式.
Dan*_*.G. 19
你需要使用一个asp-for可以编译的有效表达式,基本上如果index你是在for循环中使用的变量那么你会写<input asp-for="@Model.Requests[index].Name" />
完整示例(我用作i循环变量而不是index):
@model MyProject.TodoItemList
<ul>
@for (int i = 0; i < Model.Requests.Count; i++)
{
<li>
<label asp-for="@Model.Requests[i].Name"></label>
<input asp-for="@Model.Requests[i].Name"/>
@* Or the old html helpers if you prefer
@Html.DisplayFor(model => model.Requests[i].Name)
*@
</li>
}
</ul>
Run Code Online (Sandbox Code Playgroud)
欲了解更多信息,请表达的名称和类别中的文档
小智 5
如果您想使用单独的部分视图绑定列表:
首先,创建返回列表的操作。
public async Task<ActionResult> UpdateTable([FromForm]Filter filter)
{
if (ModelState.IsValid)
{
List<Model> model = new List<Model>();
ViewData.TemplateInfo.HtmlFieldPrefix = string.Format("Requests");
return PartialView("_PartialViewOfModel", model);
}
return BadRequest(ModelState);
}
Run Code Online (Sandbox Code Playgroud)
这段代码将出现在您的部分视图中。
@model List<Model>
@for (int i = 0; i < Model.Count; i++)
{
<input type="text" class="form-control form-control-sm" asp-for="@Model[i].Name" />
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9293 次 |
| 最近记录: |