无法理解Html.DropDownListFor的参数的用途

时间:2015-07-02 21:57:51

标签: asp.net asp.net-mvc-4 razor

我无法理解如何使用DropDownListFor。在我的例子中:

@Html.DropDownListFor(model => model.IterationsDropdown, Model.IterationsDropdown)

我有一个IterationsDropdownSelectList的模型。在这两个参数中,我指定了相同的属性,这对我来说似乎是一个重复。

这两个论点的含义是什么?

1 个答案:

答案 0 :(得分:1)

第一个参数是模型上的属性,它将保存DropDownList中的选定值,第二个参数包含生成HTML选择中的选项的实际选择列表。在您的示例中,假设IterationsDropDownList具有整数Id属性,您需要为所选id创建一个属性:

public int SelectedId { get; set; }

然后你的扩展方法调用就变成了这个:

@Html.DropDownListFor(model => model.SelectedId, Model.IterationsDropdown)

然后,在您的Controller Action方法中,您可以使用名为SelectedId的整数属性传入任何类型(它可能是您的ViewModel但它不一定是 - 它可以如果您正在遵循命令查询模式,也可以是Command,并且当表单发布回服务器时,它将包含DropDownList中所选选项的ID。

[HttpPost]
public ActionResult YourActionMethod(YourViewModel viewModel)
{
    // do something with viewModel.SelectedId
}