Asp.Net MVC 3(Razor)中带复选框的奇怪行为

时间:2012-05-31 17:06:03

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

我正在使用复选框助手(razor语法)遇到一种非常奇怪的行为。步骤顺序为:

在Index ActionResult中,我构建了将在Web中显示的ViewModel:

var viewModel = new MyViewModel
{ 
    Field1 = service.GetField(),
    Field2 = otherService.GetField()
    Field3 = otherService.Class.BooleanField
};

Field3被“渲染”为:

@Html.CheckBoxFor(model => model.Field3, new { @class = "something" })

当页面加载时,我可以看到带有选中状态的复选框(当布尔值确实为真时)。

加载页面后,将启动“OnReady”Jquery事件。在这个方法中,我调用(通过AJAX)ActionResult,它根据从ViewModel接收的参数计算价格。

不知道为什么,但Field3参数为'false',尽管值为true,并且复选框具有checked状态。之后,如果我更改了触发此计算的任何控件,则接收该方法的ViewModel包含此Field3但具有正确的值(true)。

我一直在寻找与这个值的可能交互,但是我什么都没找到,正如我所说的那样,当进行AJAX调用时,字段被正确检查。

谢谢!

Ps:使用FireBug检索的HTML:

<input id="Field_Field" class="canRequestCalculation" type="checkbox" value="true" name="Field.Field" data-val-required="Mandatory field" data-val="true" checked="checked">
<input type="hidden" value="false" name="Field.Field">

如您所见,状态已被检查,但隐藏中的值为false。

通过AJAX jQuery调用检索信息:

$.ajax({
    type: "POST",
    url: "/Controller/PerformCalculation",
    data: $("#form").serialize(),
    success: function (data) {
        //UI Work
    },
    beforeSend: function (data) {
        //UI Work
    }
});

正如我所说,第二次执行调用时,表单被正确发送,其值为true。如果我使用小提琴 HttpFox 等软件来检查HTTP调用,“Field.Field”为false,尽管在浏览器中检查了检查!

1 个答案:

答案 0 :(得分:0)

你如何在jQuery中确定复选框的状态?我目前使用$(“#checkboxId”)。attr(“checked”)来获取它的价值。