控件未从 DropDownListFor 获取选定值

发布于 2024-12-11 03:25:37 字数 1103 浏览 0 评论 0原文

我得到了以下模型:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烟雨扶苏 2024-12-18 03:25:37

您没有绑定到视图模型的正确属性。您正在绑定到一些没有意义的复杂对象 (ComboStatus)。

您应该将下拉列表绑定到 IdStatusSelecionado 属性:

<%: Html.DropDownListFor(
    x => x.ComboStatus.IdStatusSelecionado, 
    Model.ComboStatus.ComboStatus
) %>

强类型的 DropDownListFor 帮助器在视图模型上至少需要 2 个东西:

  1. 一个标量属性(int、decimal、string...),它将用于绑定到
  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:

<%: Html.DropDownListFor(
    x => x.ComboStatus.IdStatusSelecionado, 
    Model.ComboStatus.ComboStatus
) %>

A strongly typed DropDownListFor helper requires at least 2 things on your view model:

  1. A scalar property (int, decimal, string, ...) which will be used to bind to
  2. A collection of value/text pairs.

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文