Asp.net mvc 使用IList<;T>;在.cshtml中绑定值的步骤

Asp.net mvc 使用IList<;T>;在.cshtml中绑定值的步骤,asp.net-mvc,list,razor,asp.net-mvc-4,Asp.net Mvc,List,Razor,Asp.net Mvc 4,我的控制器内容是: public ActionResult Step2() { Step2BusinessLogic step2BusinessLogic = new Step2BusinessLogic(); Step2ViewModel step2ViewModel = step2BusinessLogic.CreateStep2ViewModel(); return View(step2ViewModel); } [HttpPost] public ActionR

我的控制器内容是:

public ActionResult Step2()
{
    Step2BusinessLogic step2BusinessLogic = new Step2BusinessLogic();
    Step2ViewModel step2ViewModel = step2BusinessLogic.CreateStep2ViewModel();
    return View(step2ViewModel);
}

[HttpPost]
public ActionResult Step2()
{
    ....
}
Step2ViewModel的属性类似于

public class Step2ViewModel : MultiStepBaseViewModel
{
    public IList<LayoutDetail> LayoutConfig { get; set; }
}
公共类Step2ViewModel:MultiStepBaseViewModel
{
公共IList布局配置{get;set;}
}
业务逻辑类就像

public class Step2BusinessLogic
{
    public Step2ViewModel CreateStep2ViewModel(string Id)
    {
        Step2ViewModel step2ViewModel = new Step2ViewModel();
        step2ViewModel.MultiStepId = new Guid(Id);
        step2ViewModel.LayoutConfig = GetLayout();
        return createEmailStep2ViewModel;
    }

    public List<LayoutDetail> GetLayout()
    {
        List<LayoutDetail> layoutList = new List<LayoutDetail>();

        LayoutDetail layout1 = new LayoutDetail();
        layout1.LayoutID = 1;
        layout1.LayoutTitle = "1 Column";
        layout1.LayoutImg = "~/img/create/layout/layout-1.png";
        layout1.LayoutImgPrev = "img/create/layout/layout-1-preview.png";
        layoutList.Add(layout1);

        LayoutDetail layout2 = new LayoutDetail();
        layout2.LayoutID = 2;
        layout2.LayoutTitle = "1:2 Column";
        layout2.LayoutImg = "~/img/create/layout/layout-2.png";
        layout2.LayoutImgPrev = "img/create/layout/layout-2-preview.png";
        layoutList.Add(layout2);

        .........(12 Items)

        return layoutList;
    }
}

public class LayoutDetail
{
    public int LayoutID { get; set; }

    public string LayoutTitle { get; set; }

    public string LayoutImg { get; set; }

    public string LayoutImgPrev { get; set; }
}
公共类Step2业务逻辑
{
公共Step2ViewModel CreateStep2ViewModel(字符串Id)
{
Step2ViewModel Step2ViewModel=新Step2ViewModel();
step2ViewModel.MultiStepId=新Guid(Id);
step2ViewModel.LayoutConfig=GetLayout();
返回createEmailStep2ViewModel;
}
公共列表GetLayout()
{
List layoutList=新列表();
LayoutDetail layout1=新的LayoutDetail();
layout1.LayoutID=1;
layout1.LayoutTitle=“1列”;
layout1.LayoutImg=“~/img/create/layout/layout-1.png”;
layout1.LayoutImgPrev=“img/create/layout/layout-1-preview.png”;
布局列表。添加(布局1);
LayoutDetail layout2=新的LayoutDetail();
layout2.LayoutID=2;
layout2.LayoutTitle=“1:2列”;
layout2.LayoutImg=“~/img/create/layout/layout-2.png”;
layout2.LayoutImgPrev=“img/create/layout/layout-2-preview.png”;
布局列表。添加(布局2);
(12项)
返回布局列表;
}
}
公共类布局详细信息
{
public int LayoutID{get;set;}
公共字符串LayoutTitle{get;set;}
公共字符串LayoutImg{get;set;}
公共字符串LayoutImgPrev{get;set;}
}
在我的.cshtml视图中,我想要这样的东西

@using (Html.BeginForm())
{
    @Html.HiddenFor(model => model.MultiStepId)
    @Html.ValidationSummary(true)

    @for (int i = 0; i < 12; i++)
    {
        <div class="grid_3 tcenter">
        <div class="divhighlight">
        <div style="width: 165px; margin: 6px auto 4px auto;" class="f16 bold tcenter"      id="helptrigger1">@LayoutConfig.Title</div>
        <a class="fancybox" rel="layouts" href="@LayoutConfig.LayoutImgPrev" title="1 Column">
        <img src="@LayoutConfig.LayoutImg" alt="1 Column" width="189" height="227" vspace="5" /></a>
        <div style="width:189px; margin:auto">
        <button class="button gobutton" style="margin-right: 40px; width: 165px;" value="@LayoutConfig.LayoutID">Select</button></div>
        </div>
        </div>
    }
@使用(Html.BeginForm())
{
@Html.HiddenFor(model=>model.MultiStepId)
@Html.ValidationSummary(true)
@对于(int i=0;i<12;i++)
{
@LayoutConfig.Title
挑选
}
我想将Step2ViewModel的
IList
属性的值绑定到.cshtml页面的控件。我尝试了其他方法,但未能成功

您需要使用

@Model.LayoutConfig[i].LayoutImg
而不是

@LayoutConfig.LayoutImg
以及其他情况下的cource

@LayoutConfig.LayoutID
@LayoutConfig.LayoutImgPrev

您缺少此
@Model.LayoutConfig[i]

@for (int i = 0; i < Model.LayoutConfig.Count(); i++)
    {
        <div class="grid_3 tcenter">
        <div class="divhighlight">
        <div style="width: 165px; margin: 6px auto 4px auto;" class="f16 bold tcenter"      id="helptrigger1">@Model.LayoutConfig[i].LayoutTitle </div>
        <a class="fancybox" rel="layouts" href="@Model.LayoutConfig[i].LayoutImgPrev" title="1 Column">
        <img src="@Model.LayoutConfig[i].LayoutImg" alt="1 Column" width="189" height="227" vspace="5" /></a>
        <div style="width:189px; margin:auto">
        <button class="button gobutton" style="margin-right: 40px; width: 165px;" value="@Model.LayoutConfig[i].LayoutID">Select</button></div>
        </div>
        </div>
    }
@for(int i=0;i
那么什么不起作用了?您是否已转换视图-@model Step2ViewModel?此外,您可能需要使用以下语法来访问该属性:@model.LayoutConfig[0].LayoutImg