2013-06-20 124 views
0

我有下面的模型说F:可枚举对象MVC4

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); 

我只给了文本框和dropdows作为一个例子,有可能像日期时间,复选框等许多其他控件, 我应该能够将每列写入viewbag列表并在MVC视图中显示它。

有人可以建议,如果这可以实现和如何?

非常感谢......

回答

0

不要使用viewbag这样的事情 - 而不是强烈地结合您的视图模型。只有使用视图袋,如果你有一些真正的小传..什么复杂的,你应该总是使用强类型的视图模型,你intellisence及其单元测试必须清洁

视图模型:

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