我有以下问题。在我的视图模型中,我定义了一些列表属性,如下所示:
public class BasketAndOrderSearchCriteriaViewModel
{
List<KeyValuePair> currencies;
public ICollection<KeyValuePair> Currencies
{
get
{
if (this.currencies == null)
this.currencies = new List<KeyValuePair>();
return this.currencies;
}
}
List<KeyValuePair> deliverMethods;
public ICollection<KeyValuePair> DeliveryMethods
{
get
{
if (this.deliverMethods == null)
this.deliverMethods = new List<KeyValuePair>();
return this.deliverMethods;
}
}
}
此视图模型嵌入在另一个视图模型中:
public class BasketAndOrderSearchViewModel
{
public BasketAndOrderSearchCriteriaViewModel Criteria
{
[System.Diagnostics.DebuggerStepThrough]
get { return this.criteria; }
}
}
我使用 2 种操作方法;一个用于 GET,另一个用于 POST:
[HttpGet]
public ActionResult Search(BasketAndOrderSearchViewModel model){...}
[HttpPost]
public ActionResult SubmitSearch(BasketAndOrderSearchViewModel model){...}
在视图中,我使用 EditorFor-Html Helper 实现了整个视图模型,它不想自动显示 List 属性的 DropDownLists! 1.问:如何让EditorFor显示DropDownLists?
由于我不知道如何使用 EditorFor 显示 DropDownLists,因此我使用了 DropDownList Html 帮助器并通过视图模型填充它,如下所示:
public IEnumerable<SelectListItem> DeliveryMethodAsSelectListItem()
{
List<SelectListItem> list = new List<SelectListItem>();
list.Add(new SelectListItem()
{
Selected = true,
Text = "<Choose Delivery method>",
Value = "0"
});
foreach (var item in this.DeliveryMethods)
{
list.Add(new SelectListItem()
{
Selected = false,
Text = item.Value,
Value = item.Key
});
}
return list;
}
我的 2. 问题:如您所见,我将视图模型传递给具有 POST 属性的操作方法!有没有办法让 DropDownList 的选定值绑定到传递的视图模型?目前所有 DropDownList 都是空的,并且只能通过 Request.Form 获取所选值,我绝对想避免!
我将不胜感激有关此的一些想法或提示!