MVC中的可编辑表

时间:2012-05-30 23:02:12

标签: asp.net-mvc

我一直无法弄清楚如何编辑网页上的表格项目,并将它们发回服务器。 (实际上,在这种情况下,我只是希望用户选择复选框,就好像他们选择了多个项目一样,但这仅仅是实现)。

问题在于,当视图显示在网页上时,在HttpPost中,picSelections为空。

这是我的观点的顶部:

@model IEnumerable<CarShow.lmit_pics>

@using (Html.BeginForm())
{    
<div style="width:100%; height:60px; ">
<input type="submit" value="Add Selected Photo(s) to Survey" />
</div>

    for (int i = 0; i < Model.Count(); i++)
    {
        var item = Model.ElementAt(i);
    <div style="width:296px; float:left">

            <div style="float:left; width:200px; margin-bottom:18px">

                @{string cropped = "../../../Content/Images/" + Html.DisplayFor(modelItem => item.picname).ToString() + "?" + Html.DisplayFor(modelItem => item.version).ToString();
                 }
                <img alt="picture" class="pic-size" src="@cropped" />
                <br />
                    @Html.EditorFor(modelItem => item.brand)
            </div>

</div>
        }    
}
</div>

这是在控制器中:

public ActionResult AddSurveyPic(string id)
{
   var validPicSummaries = (IEnumerable)(from x in db.lmit_pics where x.enabled == 1 select x);
   return View((IEnumerable)validPicSummaries);
}

[HttpPost]
public ActionResult AddSurveyPic(IEnumerable<CarShow_MVC.lmit_pics> picSelections)
{
        // Save data here
}

感谢。

1 个答案:

答案 0 :(得分:2)

不要在视图中编写循环。我建议你使用编辑器模板:

@model IEnumerable<CarShow.lmit_pics>

@using (Html.BeginForm())
{    
    <div style="width:100%; height:60px; ">
        <input type="submit" value="Add Selected Photo(s) to Survey" />
    </div>
    @Html.EditorForModel()
}

然后创建一个相应的编辑器模板,该模板将自动为模型的每个元素呈现:~/Views/Shared/EditorTemplates/lmit_pics.cshtml。请注意模板的名称和位置,这很重要:

@model CarShow.lmit_pics

<div style="width:296px; float:left">
    <div style="float:left; width:200px; margin-bottom:18px">
        @{string cropped = "../../../Content/Images/" + Html.DisplayFor(x => x.picname).ToString() + "?" + Html.DisplayFor(x => x.version).ToString(); }
        <img alt="picture" class="pic-size" src="@cropped" />
        <br />
        @Html.EditorFor(x => x.brand)
    </div>
</div>

您可能还想阅读following article以更好地理解默认模型绑定器在绑定集合和词典时使用的命名约定。