【问题标题】:Passing View Model to ASP.NET MVC 3 Edit Controller将视图模型传递给 ASP.NET MVC 3 编辑控制器
【发布时间】:2011-07-11 13:33:50
【问题描述】:

将视图模型(如下所示)传递给视图时,如何确保我正在创建的复选框(此处映射到项目“产品”)被传递回控制器?

我在下面包含了我的视图模型和“发布”产品控制器。

很遗憾,当回传到控制器时,“Products”为空。

namespace MyProject.Models
{
    public class ChartViewModel
    {
        public Chart ChartItem { get; set; }
        public IEnumerable<Product> Products { get; set; }
    }
}

控制器:

    [Authorize]
    [ValidateInput(false)]
    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Edit(ChartViewModel objChartViewModel)
    {

        if (!TryUpdateModel(objChartViewModel))
        {
            return View(objChartViewModel);
        }
        else
        {

        } return View("Details", objChartViewModel);

    }

复选框如何添加到我的视图中,映射到我的视图模型中的“产品”对象:

@{
   foreach (MyProject.Models.Product objProduct in Model.Products)
 {
            @Html.CheckBox("product" + objProduct.Id, Model.ChartItem.ChartProducts.Select(t => t.ProductId).Contains(objProduct.Id));
            @String.Format("{0} {1}", objProduct.Manufacturer.Name, objProduct.Name);<br />
 }
}

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3


    【解决方案1】:

    您可以将列表 (IEnumerable&lt;T&gt;) 发送到视图,但当它们没有返回到控制器时。 ViewModel 中唯一具有值的属性是那些在表单集合中具有完全匹配项的属性。因此,向您的 ViewModel 添加一个属性,例如 SelectedProductID

    这会设置一个下拉列表,将其选定的值发送回控制器:

    <div class="editor-field"> 
        @Html.DropDownListFor(m => m.SelectedEmployeeID,
            new SelectList(Model.EmployeeList, "EmployeeID", "EmployeeName"), "--Please select an Employee--")
        @Html.ValidationMessageFor(model => model.SelectedEmployeeID)
    </div>
    

    注意:设置的属性是SelectedEmployeeID,但这来自EmployeeList

    在你的情况下,很多值都在集合中(只有“选中”复选框会在帖子中发送),所以你可以这样做:

    string value = collection["myProductID"];
    

    如果它在那里检查。

    抱歉,这有点匆忙。更多信息请参见:
    MVC 3 form post and persisting model data

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多