ASP.NET MVC 5视图中的访问泛型列表

时间:2015-03-20 19:13:12

标签: c# asp.net asp.net-mvc razor

我开始使用MVC,我有以下模型

public class FormControls
{

    //Properties of the FormControls object
    public string formCName { get; set; }
    public string formCType { get; set; }
    public string formCCss { get; set; }
    public string formCEnabled { get; set; }
    public string formCDefaultVal { get; set; }

}

我还创建了以下控件,我使用linq查询数据库以选择记录。然后必须将每条记录添加到列表中。

    public ActionResult Index()
    {

        var DataContext = new EditProfileFormFieldsDataContext();
        var controls = from c in DataContext.Controls
                       select c;

        List<FormControls> Fields = new List<FormControls>();

        foreach(var fc in controls)
        {


            //Create Object for Generic List
            FormControls epc = new FormControls();
            epc.formCName = fc.Control_Name;
            epc.formCType = fc.Control_Type;
            epc.formCCss = fc.Control_CSS;
            epc.formCEnabled = fc.Control_Enabled;
            epc.formCDefaultVal = fc.Control_DefaultVal;

            //Add Object to FormControls Generic List
            Fields.Add(epc);
        }



        return View("EditProfile");
    }

我的问题是如何在视图中使用RAZOR访问列表?我试图遍历我在视图中创建的列表。我对MVC很新,我想我已经在考虑很多了:)谢谢!

2 个答案:

答案 0 :(得分:3)

您可以将视图模型设为List。把它放在视图的顶部:

@model List<FormControls>

更改Index()方法的返回值:

return View("EditProfile", Fields);

然后您可以使用@Model从视图中访问它。例如,迭代它:

@foreach (var field in Model)
{
    <p>@field.formCName</p>
}

答案 1 :(得分:0)

不过,有一种更直接的方式来实现控制器。

public ActionResult Index()
{
    var DataContext = new EditProfileFormFieldsDataContext();
    return View(DataContext.Controls.ToList());
}

或者如果您将视图重命名为&#34; index.cshtml&#34;,您可以这样做:

FOUNDATION_EXPORT double MagicalRecordVersionNumber;
FOUNDATION_EXPORT const unsigned char MagicalRecordVersionString[];

假设您还没有index.cshtml,请右键单击&#34;查看(&#34;并选择&#34;添加视图&#34;,在弹出向导中,选择&#34 ;列表视图&#34;和FormControls,将会有一个自动生成的视图,其中定义了@model,并有一个完善的表格,演示了如何使用它。