从属性来看,EM_RegTitle
我猜测您使用的模型是以某种方式从数据库自动生成的。也许实体框架?如果是这种情况,那么您应该能够在与您的 ORM/Entity Framework 实体相同的命名空间中创建部分类并添加额外的属性。就像是:
public partial class MyModel
{
public SelectList MyConstantValues { get; set; }
}
然后,您可以将您SelectList
的模型与模型的其余部分一起传递。
在您的 MVC 应用程序的每一层中使用 ORM/EF 实体通常会出现问题,尽管在线代码示例中看起来很简单,但我建议您创建自己的 View Model 类并使用 AutoMapper 之类的东西来填充这些视图。这样,您只传递视图需要的数据,避免传递 DB 行,其中可能包含您不希望用户查看或更改的其他敏感信息。
您还可以将生成静态值选择列表的逻辑移动到域模型或服务类中,以帮助减少控制器中的代码量和混乱。
希望这对您有所帮助!
例子...
你的视图模型(把它放在你的“模型”目录中):
public class MyViewModel
{
public SelectList RegTitleSelectList { get; set; }
public int RegTitle { get; set; }
}
您的控制器(进入“控制器”目录):
public class SimpleController : Controller
{
MyViewModel model = new MyViewModel();
model.RegTitle = myEfModelLoadedFromTheDb.EM_RegTitle;
model.RegTitleSelectList = // Code goes here to populate the select list.
return View(model);
}
现在右键单击SimpleController
编辑器中的类名并选择“添加视图...”。
创建一个新视图,勾选强类型并选择您的MyViewModel
类作为模型类。
现在编辑视图并执行与您之前在代码中所做的类似的操作。@model
您会注意到现在视图顶部应该有一条线。这表明您的视图是强类型视图并使用MyViewModel
模型。
如果您遇到困难,网上有很多示例可以帮助您了解 MVC 和强类型视图的基础知识。