0

我有下面的模型说 F:

public partial class F 
{
    [Key, Display(Name = "Id")]
    public int FId { get; set; }

    public int RId { get; set; }

    public int FTId { get; set; }

    public string C { get; set; }

    public string U { get; set; }

    public string D { get; set; }

    [ScaffoldColumn(false)]
    public System.DateTimeOffset Created { get; set; }

}

在控制器中,我必须从数据库中读取“F”的所有记录,并将它们分配给可枚举的记录列表。

例如:

 ViewBag.Cs = enumerable C column items (textbox)
 ViewBag.Us= enumerable U column items (textbox)
 ViewBag.FTIDs = enumerable FTId column items (this has to be a dropdown)

在我的我必须展示

 @Html.Textbox(Cs);
 @Html.Dropdown(FTIDs);

我只给出了文本框和下拉列表作为示例,可能还有许多其他控件,如日期时间、复选框等,我应该能够将每一列写为 viewbag 中的列表 a 并在 MVC 视图中显示。

有人可以建议这是否可以实现以及如何实现?

非常感谢...

4

1 回答 1

0

不要将 viewbag 用于这样的事情 - 而是将您的视图强烈绑定到模型。只有在你有一些非常小的东西要通过时才使用视图包。任何复杂的东西你都应该总是使用强类型的视图模型,你会得到智能并且它必须更清洁以进行单元测试

查看型号:

Public class MyViewModel
{
      public List<F> MyListOfFObjects { get; set; }
}

现在,当您创建视图时,您可以在弹出窗口中将其绑定到此视图模型,或者如果您不想重新创建它,只需在视图顶部添加对它的引用,如下所示:

@model <your project>.<folder view model is in>.<view model name>

例如

@model AdventureWorks.Models.EmployeeViewModel。

在您的控制器中,您只需创建此视图模型并将其传递给您的视图,例如:

public ActionResult Index()
{
  MyViewModel vm = new MyViewModel();
  // Initialize your view model
  // Get all the F objects from the database and populate the list

  return View(vm); // now your view will have the view model
}

现在在视图中,您可以遍历此视图模型

@foreach(var fObject in Model)
{
  @Html.TextBoxFor(m => m.fId)
  @Html.TextBoxFor(m => m.rID)
}

这是您可以使用 btw 的不同 @Html 助手列表的链接

http://qkview.com/techbrij/aspnet-mvc-4

强绑定视图的参考:

http://www.asp.net/mvc/tutorials/views/dynamic-v-strongly-typed-views

于 2013-06-20T13:43:37.880 回答