我希望绑定到数组的文本框在表单更改后发布。
我一直遵循this post使其正常工作,但是模型上的属性始终为null。为什么?
模型
public class TestModel
{
public int[] MyInts;
}
控制器
public ActionResult Index(TestModel model)
{
if (model.MyInts == null) // <-- Always true
{
model.MyInts = new int[] { 1, 2, 3, 4 };
}
}
查看
@model TestModel
@using (Html.BeginForm("Index", "Test", FormMethod.Post, new { id = "TestForm" }))
{
<table class="table">
<thead>
<tr>
<th />
@for (int i = 0; i < Model.MyInts.Count(); i ++)
{
<th>
@Html.TextBoxFor(x => Model.MyInts[i], new { onchange = "this.form.submit();" })
</th>
}
答案 0 :(得分:0)
您在MyInts
中的TestModel
被声明为字段。
相反,它必须是具有get
和set
的公共财产。
将其更改为:
public class TestModel
{
public int[] MyInts { get; set; }
}
此外,如注释中所述,您的控制器必须包含GET和POST Index
操作方法。
public class TestController : Controller
{
public ActionResult Index()
{
var viewModel = new TestModel {
MyInts = new [] { 1, 2, 3, 4 }
};
return View(viewModel);
}
[HttpPost()]
public ActionResult Index(TestModel model)
{
if (model.MyInts == null)
{
model.MyInts = new int[] { 1, 2, 3, 4 };
}
// ...
return RedirectToAction("Index");
}
}