控件未从 DropDownListFor 获取选定值
我得到了以下模型:
public class ViewBloqueioNotaFiscal
{
public ViewComboStatus ComboStatus = new ViewComboStatus();
public class ViewComboStatus
{
public int? IdStatusSelecionado { get; set; }
public IEnumerable<SelectListItem> ComboStatus { get; set; }
}
}
以下控制器方法:
public ViewBloqueioNotaFiscal.ViewComboStatus geraComboStatus(int? statusSelecionado)
{
ViewBloqueioNotaFiscal.ViewComboStatus combo = new ViewBloqueioNotaFiscal.ViewComboStatus
{
IdStatusSelecionado = statusSelecionado,
ComboStatus = new[]{
new SelectListItem { Value = 1, Text = "Op1"},
new SelectListItem { Value = 2, Text = "Op2"}
}
};
return combo;
}
我的 aspx 就像:
<%: Html.DropDownListFor(x => x.ComboStatus.IdStatusSelecionado, Model.ComboStatus.ComboStatus) %>
它完美地显示以供选择,但是当我提交表单时,控制器中的 post 方法会完美地获取模型的值,除了我收到 null 的这个组合之外值到模型中。由于这是我第一次尝试,我认为有些事情是错误的。
你们能帮我检查一下吗?如果您有更好的解决方案,我也想知道。
感谢您的帮助!
I got the following Model:
public class ViewBloqueioNotaFiscal
{
public ViewComboStatus ComboStatus = new ViewComboStatus();
public class ViewComboStatus
{
public int? IdStatusSelecionado { get; set; }
public IEnumerable<SelectListItem> ComboStatus { get; set; }
}
}
The following controller method:
public ViewBloqueioNotaFiscal.ViewComboStatus geraComboStatus(int? statusSelecionado)
{
ViewBloqueioNotaFiscal.ViewComboStatus combo = new ViewBloqueioNotaFiscal.ViewComboStatus
{
IdStatusSelecionado = statusSelecionado,
ComboStatus = new[]{
new SelectListItem { Value = 1, Text = "Op1"},
new SelectListItem { Value = 2, Text = "Op2"}
}
};
return combo;
}
And my aspx is like:
<%: Html.DropDownListFor(x => x.ComboStatus.IdStatusSelecionado, Model.ComboStatus.ComboStatus) %>
Its getting perfectly displayed for selection but when I submit my form, my post method from controller gets the model perfectly with the values except for this combo that Im recieving null value into the model. As its the first one that I try, I think that something is wrong.
Could you guys check that for me? If you have any better solution for this I d like to know too.
thanks for the help !
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您没有绑定到视图模型的正确属性。您正在绑定到一些没有意义的复杂对象 (
ComboStatus
)。您应该将下拉列表绑定到
IdStatusSelecionado
属性:强类型的 DropDownListFor 帮助器在视图模型上至少需要 2 个东西:
如果值/文本对的集合包含一个项目,其值等于用作第一个参数的标量属性,则将预先选择该项目。例如,如果您想预先选择示例中的第二项,您可以在视图模型上设置
IdStatusSelecionado=2
。旁注:
Model.ComboStatus.ComboStatus
看起来很糟糕。请重命名。You are not binding to the correct property of your view model. You are binding to some complex object (
ComboStatus
) which doesn't make sense.You should bind the drop down list to the
IdStatusSelecionado
property:A strongly typed DropDownListFor helper requires at least 2 things on your view model:
If the collection of value/text pairs contains an item whose value is equal to the scalar property you used as first argument, this item will be preselected. For example if you wanted to preselect the second item in your example you would set
IdStatusSelecionado=2
on your view model.Side note:
Model.ComboStatus.ComboStatus
looks terrible. Please rename.