我有一个类似这样的成员的课程:
[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')
答案 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')