2

在我的 mvc4 应用程序中,我在页面上设置了下拉列表,像这样注册

在 AccountModel.cs 的 HttpGet Register 方法中,我用这段代码初始化了它的数据

public ActionResult Register()
{
   MyModel mm=new MyModel();
   mm.mydropdown=new []
   { 
      new SelectListItem{Value="value", Text="text"}
      ////...
   };
}

只有当此页面加载时,该代码才会运行;但是在任何地方我都可以插入必须编译的代码片段并mydropdown始终在应用程序中进行初始化,这样我就不必在[HttpPost]方法中重写它?

[更新] 这是mymodel课程

public class Register
{
   [Required(ErrorMessage="Option is required")]
   public string option;

   public IEnumerable<SelectListItem> Options;
}

就我而言,我option像这样在cshtml中使用

@Html.DropDownListFor(m=>m.option, Model.Options,"Select an item")

HttpPost注册方法中,我必须重新初始化选项,否则我会遇到错误“ Option is of type string but it must be IEnumerable<SelectListItem> instead”,否则

4

1 回答 1

1

你可以扩展IEnumerable<SelectListItem>并这样做

public class MyDropDownList : IEnumerable<SelectListItem> 
{
    public MyDropDownList()
    { 
          SelectedListItem item = new SelectListItem{Value="value", Text="text"};
          this.Add(item);
    }
}

或者,您可以将其写入MyModel

public class Register
{
    [Required(ErrorMessage="Option is required")]
    public string option;

    public IEnumerable<SelectListItem> Options;
    public Register()
    {
         this.Options = new []
         { 
            new SelectListItem{Value="value", Text="text"}
            ////...
         };
    }
}
public ActionResult Register()
{
   Register mm = new Register();
}
于 2013-02-27T01:14:44.850 回答