RadioButtonFor始终将true传递给MVC控制器

时间:2018-08-29 19:50:18

标签: c# asp.net-mvc radio-button

我在很多地方都找到了类似问题的答案,但即使复制/粘贴代码也无法解决我的问题

我正在开发MVC / C#应用程序,并且具有如下所示的bool属性:

public bool IsMarried { get; set; }

在视图方面,我有以下代码表示该属性:

<label class="radio-inline">
    @Html.RadioButtonFor(model => model.IsMarried , true)Yes
</label>
<label class="radio-inline">
    @Html.RadioButtonFor(model => model.IsMarried , false)No
</label>

我的问题是,无论何时我提交表单,我都会获得所有其他正常字段(文本),但布尔属性始终为true

正如我提到的,我发现了许多解决方案,例如this one,但我不知道为什么它对我不起作用。


由作者添加:

我想添加此问题以使所有内容可见。除了上面显示的代码外,我还使用Ajax提交表单。

这是Ajax代码:

function SaveWebFormToDatabase() {
    var formData = new FormData();
    //Append the other textboxes with the form data
    formData.append("LastName", $("#LastName").val());
    formData.append("FirstName", $("#FirstName").val());
    formData.append("IsMarried", $("#IsMarried").val());

    $.ajax({
        type: "POST",
        url: "../User/SaveFirstWebForm",
        data: formData,
        processData: false,
        contentType: false,
        success: function (data) {
            $('#loading_div').hide();
        },
        error: function (exception) {
            console.log(exception);
        }
    });
}

在控制器端,这是接收呼叫的方法:

[HttpPost]
    public JsonResult SaveFirstWebForm(WebApplicationFirstPhase model)
    {
        string Nme = model.FirstName + model.LastName;
        bool ArmedFBit = model.IsMarried;//this is always true!
        return Json("");
    }

1 个答案:

答案 0 :(得分:1)

问题出在jquery选择器设置中。

您可以尝试使用

$('input[name=IsMarried]:checked').val()

代替

$("#IsMarried").val()

获取值,因为您要获取已选中的单选按钮。