MVC3复选框将值从视图传递回模型

时间:2012-02-23 03:43:40

标签: asp.net asp.net-mvc-3

我有一个只是

的视图模型
public class Visits
{
    public List<Visit> visits { get; set; }
}

在我的访问模型中,我有一个

public bool ValidVisit { get; set; }

我可以将所有内容传递给我的视图,并在视图上呈现所有访问。视图看起来像

@model TheWallSite.ObjectModels.Visits

@{
    ViewBag.Title = "Potential invalid visits!";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
@using (Html.BeginForm())
{
       <fieldset>
        <table>
            <tr><th>Check In/Out Time</th><th>Visit Type</th><th>In/Out</th><th>IP</th><th>SSO ID</th><th>Valid Visit</th></tr>

            @foreach (var item in Model.visits)
            {
                <tr>
                    <td>@Html.DisplayFor(model => item.InOutTime)</td>
                    <td>@Html.DisplayFor(model => item.VisitType)</td>
                    <td>@Html.DisplayFor(model => item.VisitName)</td>
                    <td>@Html.DisplayFor(model => item.IP)</td>
                    <td>@Html.DisplayFor(model => item.SSO)</td>
                    <td>@Html.EditorFor(model => item.ValidVisit)</td>
                </tr>
            }
        </table>
        <input type="submit" value="Submit" />
       </fieldset>
}

我遇到的问题是我希望最终用户能够检查/取消选中ValidVisit然后将它们传回控制器并在我的数据库中进行正确的更改..我有一点时间计算如何做到这一点。有什么建议?我的[HttpPost]控制器签名是

public ActionResult ListQuestionableVisits(Visits model, FormCollection forms)

但似乎没有任何东西回到控制器。

1 个答案:

答案 0 :(得分:2)

这可能是模型绑定没有踢,可能是由于循环。

我知道我知道,它应该工作,但是以正确的方式做,并且它有更好的工作机会。

尝试使用编辑器模板。

<强> /EditorTemplates/Visit.cshtml

@model TheWallSite.ObjectModels.Visit
<tr><td>@Html.DisplayFor(model => model.InOutTime)</td></tr>
<tr><td>@Html.DisplayFor(model => model.VisitType)</td></tr>
<tr><td>@Html.DisplayFor(model => model.VisitName)</td></tr>
<tr><td>@Html.DisplayFor(model => model.IP)</td></tr>
<tr><td>@Html.DisplayFor(model => model.SSO)</td></tr>
<tr><td>@Html.EditorFor(model => model.ValidVisit)</td></tr>

主要观点:

@model TheWallSite.ObjectModels.Visits

@{
    ViewBag.Title = "Potential invalid visits!";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
@using (Html.BeginForm())
{
       <fieldset>
        <table>
            <tr>
               <th>Check In/Out Time</th>
               <th>Visit Type</th>
               <th>In/Out</th>
               <th>IP</th>
               <th>SSO ID</th>
               <th>Valid Visit</th>
            </tr>                
            @Html.EditorFor(model => model.Visits)
        </table>
        <input type="submit" value="Submit" />
       </fieldset>
}

此外,如果那是你的完整视图,你不需要动作中的FormCollection参数,除非有一个隐藏的字段/其他一些我没看到的魔法字段。