我想问一下,如何在Asp.NET Core MVC中绑定数组?
<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中的工作方式。
答案 0 :(得分:12)
您需要使用可以编译的index
的有效表达式,基本上如果<input asp-for="@Model.Requests[index].Name" />
是您在for循环中使用的变量,那么您将编写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>
):
from random import randint
secretNumber=randint(1,10)
number = raw_input("Guess")
number = int(number)
while "number"!=secretNumber:
print "try again"
number = int (raw_input("Guess"))
elif "number"==secretNumber:
print "you won"
有关详细信息,请查看the docs
中的表达式名称和集合答案 1 :(得分:1)
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);
}
@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" />}