Asp.net mvc Asp.net MVC从EditorFor获取值
我创建了一个局部视图来处理下拉列表控件。在我的模型中,我有一个用于成本中心列表的属性Asp.net mvc Asp.net MVC从EditorFor获取值,asp.net-mvc,Asp.net Mvc,我创建了一个局部视图来处理下拉列表控件。在我的模型中,我有一个用于成本中心列表的属性 [UIHint("SelectionList")] public List<SelectListItem> CostCentersList {get; private set;} 然后返回视图(模型) 控件按照我的预期呈现。问题是,当我单击“提交”时,我的Model.CostCenterId为0,Model.CostCenterList为空。我似乎无法从控件中获取所选值。要
[UIHint("SelectionList")]
public List<SelectListItem> CostCentersList {get; private set;}
然后返回视图(模型)
控件按照我的预期呈现。问题是,当我单击“提交”时,我的Model.CostCenterId为0,Model.CostCenterList为空。我似乎无法从控件中获取所选值。要创建下拉列表,您需要两个属性:一个表示所选值并与之绑定的属性和一个
SelectListItem
列表。在您的情况下,您只有一个列表。因此,您需要一个中间视图模型:
public class DropDownViewModel
{
public string SelectedItemId { get; set; }
public IEnumerable<SelectListItem> Items { get; set; }
}
和您的编辑器模板:
<%@ Control
Language="C#"
Inherits="System.Web.Mvc.ViewUserControl<DropDownViewModel>" %>
<%= Html.DropDownListFor(x => x.SelectedItemId, Model.Items) %>
x、 SelectedItemId,Model.Items)%%>
最后,在您的主要观点中:
<%= Html.EditorFor(m => m.CostCentersList) %>
m.CostCentersList)%%>
现在可以使用SelectedItemId
属性设置/获取值
public class DropDownViewModel
{
public string SelectedItemId { get; set; }
public IEnumerable<SelectListItem> Items { get; set; }
}
[UIHint("SelectionList")]
public DropDownViewModel CostCentersList { get; set; }
<%@ Control
Language="C#"
Inherits="System.Web.Mvc.ViewUserControl<DropDownViewModel>" %>
<%= Html.DropDownListFor(x => x.SelectedItemId, Model.Items) %>
<%= Html.EditorFor(m => m.CostCentersList) %>