c# - 如何使用 asp-for 标记绑定(bind)数组?

标签 c# asp.net-core asp.net-core-mvc

请问,如何在Asp.NET Core MVC 中绑定(bind)数组?

<input type="text" asp-for="Requests[@index].Name" />

它在旧版本的 ASP MVC 中运行良好。
此示例显示“内部服务器错误”。

“在编译处理此请求所需的资源期间发生错误。请查看以下特定错误详细信息并适当修改您的源代码。”

ViewModel 类示例:
public class ViewModel
{
    public List<Model> Requests {get;set;}
}

模型类示例:
public class Model
{
    public string Name {get;set;}
}

它应该如何工作?在您提交带有这些输入的表单后,MVC 应该自动创建并映射 ModelView 中的列表。这就是它在 ASP.NET MVC 4 中的工作方式。

最佳答案

您需要使用带有 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>

有关更多信息,请查看 the docs 中的表达式名称和集合

关于c# - 如何使用 asp-for 标记绑定(bind)数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41873171/

相关文章:

c# - 使用最小起订量查找模拟设置的方法

c# - 将数据从 View 传递到 Controller asp.net core razor 页面

c# - ASP.Net Core 3.0 依赖注入(inject)忽略工厂方法?

asp.net-core-mvc - 在 .NET CORE MVC 6 应用程序中调试未命中断点

c# - 在 LINQ 中列出列

C# 覆盖 Collection<T> 中的方法

c# - 如何检索 EF Core 中动态属性的值

asp.net-core - ASP.Net Core Razor Pages 应用程序未绑定(bind)到模型中的属性

c# - 从操作返回文件时,流是否会被处置?

asp.net-core - 检查用户是否有权访问 Controller 操作(在访问之前)