Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 将常量值绑定到视图中的最佳方法(MVC3)_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 3 将常量值绑定到视图中的最佳方法(MVC3)

Asp.net mvc 3 将常量值绑定到视图中的最佳方法(MVC3),asp.net-mvc-3,Asp.net Mvc 3,我有一个常量值,如“必需”、“可选”和“隐藏”。我想把它绑定到dropdownlist中。到目前为止,我所做的是下面的代码,这是在视图中编码的。将常量值绑定到dropdownlist的最佳方法是什么?我想在控制器中实现它,并在视图中调用它 @{ var dropdownList = new List<KeyValuePair<int, string>> { new KeyValuePair<int, string>(0, "Required"), ne

我有一个常量值,如“必需”、“可选”和“隐藏”。我想把它绑定到dropdownlist中。到目前为止,我所做的是下面的代码,这是在视图中编码的。将常量值绑定到dropdownlist的最佳方法是什么?我想在控制器中实现它,并在视图中调用它

@{
    var dropdownList = new List<KeyValuePair<int, string>> { new KeyValuePair<int, string>(0, "Required"), new KeyValuePair<int, string>(1, "Optional"), new KeyValuePair<int, string>(2, "Hidden") };
    var selectList = new SelectList(dropdownList, "key", "value", 0); 

} 

从属性
EM_RegTitle
判断,我猜您使用的模型是以某种方式从数据库自动生成的。也许是实体框架?如果是这种情况,那么您应该能够在与您的ORM/实体框架实体相同的命名空间中创建分部类,并添加额外的属性。比如:

public partial class MyModel
{
    public SelectList MyConstantValues { get; set; }
}
然后,您可以将您的
SelectList
与模型的其余部分一起传递

在MVC应用程序的每一层中使用ORM/EF实体通常都会遇到一些问题,尽管在线代码示例中看起来很简单,但我建议您创建自己的视图模型类,并使用AutoMapper之类的工具来填充这些视图。这样,您只传递视图所需的数据,并且避免传递DB行,因为DB行可能包含您不希望用户查看或更改的其他敏感信息

您还可以将生成静态值选择列表的逻辑移动到域模型中,或移动到服务类中,以帮助减少控制器中的代码量和混乱

希望这对你有所帮助

例如

您的视图模型(将其放入“模型”目录中):

您的控制器(进入“控制器”目录):

现在右键单击编辑器中的
SimpleController
类名,然后选择“添加视图…”

创建一个新视图,勾选强类型并选择您的
MyViewModel
类作为模型类

现在编辑视图,并执行与前面代码中类似的操作。您会注意到视图顶部现在应该有一个
@model
行。这表示您的视图是强类型视图,并使用
MyViewModel
模型


如果你陷入困境,网上有很多关于MVC和强类型视图的基础知识的例子。

从属性
EM_RegTitle
判断,我猜你使用的模型是以某种方式从数据库自动生成的。也许是实体框架?如果是这种情况,那么您应该能够在与您的ORM/实体框架实体相同的命名空间中创建分部类,并添加额外的属性。比如:

public partial class MyModel
{
    public SelectList MyConstantValues { get; set; }
}
然后,您可以将您的
SelectList
与模型的其余部分一起传递

在MVC应用程序的每一层中使用ORM/EF实体通常都会遇到一些问题,尽管在线代码示例中看起来很简单,但我建议您创建自己的视图模型类,并使用AutoMapper之类的工具来填充这些视图。这样,您只传递视图所需的数据,并且避免传递DB行,因为DB行可能包含您不希望用户查看或更改的其他敏感信息

您还可以将生成静态值选择列表的逻辑移动到域模型中,或移动到服务类中,以帮助减少控制器中的代码量和混乱

希望这对你有所帮助

例如

您的视图模型(将其放入“模型”目录中):

您的控制器(进入“控制器”目录):

现在右键单击编辑器中的
SimpleController
类名,然后选择“添加视图…”

创建一个新视图,勾选强类型并选择您的
MyViewModel
类作为模型类

现在编辑视图,并执行与前面代码中类似的操作。您会注意到视图顶部现在应该有一个
@model
行。这表示您的视图是强类型视图,并使用
MyViewModel
模型


如果您陷入困境,在线上有很多示例可以帮助您了解MVC和强类型视图的基本知识。

您更喜欢查看模型并在控制器中填充数据

class MyViewModel
{
    public string ReqTitle { get; set; }
    public SelectList SelectListItems { get; set; }
}
然后您可以使用:

@Html.DropDownListFor(model => model.EM_ReqTitle, model.SelectListItems) 

您更喜欢查看模型并在控制器中用数据填充它

class MyViewModel
{
    public string ReqTitle { get; set; }
    public SelectList SelectListItems { get; set; }
}
然后您可以使用:

@Html.DropDownListFor(model => model.EM_ReqTitle, model.SelectListItems) 

是的,你说得对,模型是自动生成的。我使用EF作为模型。无论如何,我怎样才能为MyConstantValues分配一个值?你能给我一个示例实现吗?谢谢,我在上面添加了一些示例代码。你最好的选择是使用Google查找MVC3和强类型视图的介绍。是的,你说得对,模型是自动生成的。我使用EF作为模型。无论如何,我怎样才能为MyConstantValues分配一个值?你能给我一个示例实现吗?谢谢,我在上面添加了一些示例代码。您最好使用Google查找MVC 3和强类型视图的介绍。好的,那么我如何设置上述示例中的“必需”、“可选”和“隐藏”值?好的,那么我如何设置上述示例中的“必需”、“可选”和“隐藏”值?