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