我在使用viewmodel的MVC应用程序中有一个视图。
视图上的所有控件都链接到viewmodel(即@html.textboxfor(model => model.ViewModel.Class)
),除了一个 - 我创建的一个select控件作为级联ddl,它根据它上面的DropDownListFor
的值进行更改。
如何在viewmodel中包含此自定义选择中的选定值,并将其作为FormMethod.Post
的一部分传回控制器?
答案 0 :(得分:1)
您可以将其绑定为动作参数
[HttpPost]
public ActionResult YourAction(YuorModel model, string fieldname)
或者您可以从FormCollection
[HttpPost]
public ActionResult YourAction(YuorModel model, FormCollection form)
{
var param = form["fieldname"];
}
或者只是使用控件的字段名称将此字段添加到viewmodel。
答案 1 :(得分:0)
嗯,视图模型正是为了这个。您可以在视图中添加所需的任何属性。在这种情况下,你似乎在谈论一些DropDown。要获得下拉列表,您需要2个属性:用于保存所选值的标量属性和用于保存可能值的IEnumerable<SelectListItem>
。
所以继续将这两个属性添加到视图模型中:
public string SelectedValue { get; set; }
public IEnumerable<SelectListItem> Values { get; set; }
然后,为视图提供服务的控制器操作应该使用所有可用值填充Values集合属性,然后将视图中的下拉列表绑定到这两个属性:
@Html.DropDownListFor(x => x.SelectedValue, Model.Values)
当然,由于您的POST操作将视图模型作为参数,因此您只需查看model.SelectedValue
属性即可检索用户选择的值。