使用ajax将视图中的数据恢复到控制器

时间:2014-11-09 17:08:05

标签: jquery ajax asp.net-mvc

我有一个类似这样的成员的课程:

[NotMapped]
public string Description { get; set; }
[NotMapped]
public bool Available { get; set; }

我在这个视图中显示它们:

<td>
    <div class="col-md-12">
        @Html.EditorFor(model => model.Description, new { htmlAttributes = new { @class = "form-control" } })
    </div>
</td>
<td>
    <div class="col-md-12">
        @Html.CheckBoxFor(model => model.Available, new { htmlAttributes = new { @class = "form-control" } })
        @Html.LabelFor(model => model.Available, new { @class = "control-label"})
    </div>
</td>
<td>
    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="button" id="GoButton" value="Apply" class="btn btn-default" />
        </div>
    </div>
</td>

附加到按钮的是一个脚本,它会像这样对控制器进行ajax调用。

<script type="text/javascript">
$("#GoButton").click(
    function() {
        $.ajax(
            {
                url: '@Url.Action("DoSomething", "SomeController")',
                type: 'POST',
                dataType: 'json',
                data:
                {
                    description: $('select[name="Description"]').text(),
                    avail: $('select[name="Available"]').val()

                }
            }

控制器中函数的签名是:

public ActionResult DoSomething(string description, bool avail)

这一切都有效,除了&#39;描述&#39;并且&#39;可用&#39;在DoSomething()中总是&#34;&#34;并且假没有关于视图中那些项目发生了什么。他们的真正价值似乎并没有转移到控制者身上。

我做错了什么?

[ANSWER]

我的整个问题在于我编写脚本data:部分的方式。这是该部分的正确代码。

description: $('#Description').val(),
avail: $('#Available').is(':checked')

1 个答案:

答案 0 :(得分:0)

&#39; CheckBoxFor&#39;没有呈现&#39;选择&#39;但是&#39;输入&#39;

而不是

description: $('select[name="Description"]').text(),
avail: $('select[name="Available"]').val()

description: $('input[name="Description"]').val(),
avail: $('input[name="Available"]').is(':checked')