MVC 4.5数据绑定HTML到字典,发布到对象
本文关键字:对象 字典 MVC 数据绑定 HTML | 更新日期: 2023-09-27 18:13:42
c#和mvc新,所以我很困惑,为什么在这两个例子中,只有一个工作。我只是通过添加断点和检查对象来检查这一点。
视图(两个示例相同)
<form action="@Url.Action("Post", "Delivery")" method="post">
<table class="table" id="table">
<tbody>
@if (Model != null)
{
foreach (var line in Model.TransactionLines)
{
<tr>
<td>@line.StockCode</td>
<td>@line.Location</td>
<td>@line.Qty</td>
<td>
<input type="text" size="5" maxlength="5" name="@("MoveOut[" + line.TranID + "]")" value="" />
</td>
</tr>
}
}
</tbody>
</table>
<input type="submit" value="Post" class="btn btn-primary" />
</form>
工作:控制器public ActionResult Post(Dictionary<string, string> MoveOut)
{
return RedirectToAction("Saved");
}
不工作:
控制器public ActionResult Post(DeliveryModel Delivery)
{
return RedirectToAction("Saved");
}
public class DeliveryModel : ReceiptModel
{
//Also tried below
//public Dictionary<string, string> MoveOut;
public Dictionary<string, string> MoveOut = new Dictionary<string,string>();
您的DeliveryModel
只有MoveOut
的字段,而不是具有getter和setter的属性,因此DefaultModelBinder
不能设置值。改为
public class DeliveryModel : ReceiptModel
{
public Dictionary<string, string> MoveOut { get; set; }
}