严格类型视图中的下拉列表



我正在使用MVC 4、LINQ to SQL和Razor语法创建一个C#应用程序。

我创建了一个类,它根据请求的id获取数据库中给定行的内容。

我做了一个控制器,它有一个获取和发布处理程序。我基于其中一个模型类创建了一个强类型视图,一切都很好。数据被检索并显示在表单中。数据可以更新和提交。

问题是下降。我不希望它显示id的文本字段。我想要下拉列表。我有大约五个下拉列表,都是从数据库中生成的。我创建了模型来创建它们。

我可以使用ViewData或ViewBag毫无问题地传递下拉列表。但是,当用户加载页面时,我如何选择所选的选项?

MVC中的"模型"应该为页面建模,而不是为数据建模。如果您的页面上有下拉列表,那么您的模型上应该有一个表示选择的某种集合(可能是List<T>),以及另一个表示所选值的属性。此属性将用于填充下拉列表的初始值,并将所选值发送回控制器。

我建议避免使用ViewData或ViewBag,而使用ViewModel。

ViewModel本质上是一个混合模型,它将视图所需的所有数据聚合到一个实体中。与将视图键入到模型中并传递视图所需的附加信息(该信息不在ViewData或ViewBag中的模型中)不同,您在将视图键入的模型中拥有所需的一切。

在您的情况下,ViewModel可能看起来像这样:

public class MyViewModel
{
    public DropDown1 DropDownA { get; set; }
    public DropDown2 DropDownB { get; set; }
    public Model ModelData { get; set; }
}
public class DropDown1
{
    public int SelectedValue { get; set; }
    public List<T> DropDownValues { get; set; }
}
public class DropDown2
{ 
    public int SelectedValue { get; set; }
    public List<T> DropDownValues { get; set; }
}

您的视图将键入MyViewModel。此时,将下拉列表的数据源设置为ViewModel中的下拉列表并设置SelectedValue将是微不足道的。

相关内容

  • 没有找到相关文章

最新更新