-1

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

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

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

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

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

4

2 回答 2

2

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

于 2013-02-04T17:27:56.400 回答
1

我建议避免使用 ViewData 或 ViewBag 来支持ViewModel

ViewModel本质上是一个混合模型,它将 View 需要的所有数据聚合到一个实体中。而不是将视图输入到模型并传递视图所需的附加信息,这些信息不在 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 将是微不足道的。

于 2013-02-04T17:54:38.397 回答