我有以下型号说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 View中显示它。
有人可以建议这是否可以实现以及如何实现?
非常感谢......
答案 0 :(得分: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