【发布时间】:2013-02-27 01:05:27
【问题描述】:
在我的 mvc4 应用程序中,我在页面上设置了下拉列表,像这样注册
在 AccountModel.cs 的 HttpGet Register 方法中,我用这段代码初始化了它的数据
public ActionResult Register()
{
MyModel mm=new MyModel();
mm.mydropdown=new []
{
new SelectListItem{Value="value", Text="text"}
////...
};
}
只有在页面加载时,该代码才会运行;但是有没有什么地方我可以插入必须编译的代码 sn-p 并让我的mydropdown 始终在应用程序中初始化,这样我就不必在[HttpPost] 方法中重写它?
[更新]
这是mymodel 类
public class Register
{
[Required(ErrorMessage="Option is required")]
public string option;
public IEnumerable<SelectListItem> Options;
}
就我而言,我在 cshtml 中像这样使用option
@Html.DropDownListFor(m=>m.option, Model.Options,"Select an item")
在HttpPost注册方法中,我必须重新初始化选项,否则我会遇到错误“Option is of type string but it must be IEnumerable<SelectListItem> instead”
【问题讨论】:
-
我喜欢帮助类(我称它们为"composers")来设置我的模型。这样,我可以进行一次调用并从任意数量的方法中准备模型。当您有许多要重新填充的属性时,它变得非常有用。为了回答您最初的问题,没有任何自动状态管理(就像在网络表单中那样)使下拉菜单“正常工作”。
-
非常感谢蒂姆:D,我会尽快跟进您的建议。
-
没问题。您的问题是一个很好的问题……控制器经常变得难以管理,因为他们开始对他们正在准备的视图模型“做太多”。
标签: c# asp.net asp.net-mvc-4