【问题标题】:MVC submit multiple objects in model when form post表单发布时,MVC在模型中提交多个对象
【发布时间】:2012-06-02 05:39:01
【问题描述】:

我面临一个问题,当我有一个复杂的模型时,如果我提交表单,它不会给我所有模型属性的所有值,在下面的示例中,我没有取回 gridModel 属性:

型号

public class InventoryModel {
    public GridModel GridModel { get; set; }
    public Int32 UserKey { get; set; }
}

public class GridModel {
    public String GridId { get; set; }
    public String GridName { get; set; }
    public List<String> columns { get; set; }
}

控制器

public ActionResult Index(){
    InventoryModel model = new InventoryModel();

    model.UserKey= 20014;
    model.GridModel = new GridModel();
    model.GridModel.GridId = "jqgInventory";
    model.GridModel.GridName = "Inventory Grid";
    return View(model);
}

 [HttpPost]
 public ActionResult Index(InventoryModel model){
    Int32 userId = model.UserKey; // This has a value
    String gridId = model.GridModel.GridId;  // This doesn't have a value
    String gridName= model.GridModel.GridName; // This doesn't have a value
}

查看

@model InventoryModel
@using (Html.BeginForm()) {
    @Html.TextBoxFor(m => m.UserKey, new { @class = "w200" })
    @Html.TextBoxFor(m => m.GridModel.GridId , new { @class = "w200" })
    @Html.TextBoxFor(m => m.GridModel.GridName, new { @class = "w200" })

    <input type="submit" value="Submit" />
}

如有任何建议,我们将不胜感激。

谢谢, 唉

【问题讨论】:

  • 研究创建自定义模型绑定器。

标签: asp.net-mvc-4 model-binding


【解决方案1】:

您可以改用 ViewModel 而不是实际的模型。这将是一个更扁平的类,专门反映视图的数据。

public class InventoryViewModel{
    Int32 UserKey {get; set; }
    public String GridId { get; set; }
    public String GridName { get; set; }        
}

如有必要,您的控制器可以将您的模型映射到您的 ViewModel

【讨论】:

    猜你喜欢
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-21
    • 1970-01-01
    相关资源
    最近更新 更多