在MVC 4中选中复选框时发布结果

时间:2014-04-22 09:45:44

标签: c# asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

我被要求更详细地转发这个问题。

我是MVC的新手,我很欣赏任何支持性解释,尽管我非常基于.NET开发。

方案

我有一个日历,当日历被选中时会发布信息。它看起来像这样:

@foreach (var OfflineCalendar in Model.OfflineCalendars.Skip(1))
{
    <li data-name="@OfflineCalendar.Name" data-val="@OfflineCalendar.Id">@Html.ActionLink(OfflineCalendar.Name, "Index", new { Id = OfflineCalendar.Id }, new { @class = "location" })</li>
 }

日历仅返回一个月的数据,该数据将一些数据传递给ContentResult方法。

我已为存档数据添加了一个复选框。

<label>
    Archived
    @Html.CheckBox("checkedArchive")
</label>

我的任务

我想添加一个存档按钮,用户可以在其中查看历史数据。如果选中此复选框,则会更改ContentResult Data方法中的某些参数。

困境

在.NET中,我会轻松检查是否选中了复选框,并根据所选的日历触发事件。我正在努力做MVC等价物。

我想要做的就是检查选择日历位置时是否检查过它。如果是,返回一个真或假的bool。哪个会影响ContentResult。

我不想使用Ajax。我只是想检查选择位置时是否选中了复选框。就这样。

以下是我提出的相关问题:clicky

感谢您的阅读。

2 个答案:

答案 0 :(得分:2)

听起来您希望通过现有代码完成所有服务器端,只想访问复选框的值。

如果这是正确的,我会修改ViewModel以包含布尔“IncludeArchived”,然后将其添加到您的页面:

 @Html.CheckBoxFor(model => model.IncludeArchived)

当您提交表单时,该值应包含在您的模型中。

或者,您可以在服务器端检查Request.Form [“checkedArchive”]并将其解析为布尔值。

答案 1 :(得分:0)

您需要在jquery中编写复选框事件,并检查表单后是否选中复选框并从服务器返回内容,否则不要发布表单。

像这样:

查看:

<form action="" method="POST" id="MyForm">
    <label>
        Archived
        @Html.CheckBox("checkedArchive")
    </label>
</form>

Jquery的:

$('#checkedArchive').on('change',function(){


if(this.checked)
{

$('#MyForm').submit();

}


});