我有一个下拉列表,我用它来刷新带有复选框的div。
我试图找出为什么如果我以JSON格式传入数据,我的视图不会刷新。如果我只传入常规字符串,则视图会刷新。 如果我传入JSON数据,则视图不会刷新。
如果我单步浏览部分视图中的代码,我可以看到正在传入的正确记录数,但视图没有使用正确数量的复选框刷新。
我尝试添加一些缓存指令,它没有用。
这不起作用:
$(function () {
$('#ddlMoveToListNames').change(function () {
var item = $(this).val();
var selectedListID = $('#ddlListNames').val();
var checkValues = $('input[name=c]:checked').map(function () {
return $(this).val();
}).toArray();
$.ajax({
url: '@Url.Action("Test1", "WordList")',
type: 'POST',
cache: false,
data: JSON.stringify({ words: checkValues, moveToListID: item, selectedListID: selectedListID }),
dataType: 'json',
contentType: 'application/json; charset=utf-8',
success: function (result) {
}
})
.done(function (partialViewResult) {
$("#divCheckBoxes").replaceWith(partialViewResult);
});
});
});
这有效:
$(function () {
$('#ddlMoveToListNames').change(function () {
var item = $(this).val();
var selectedListID = $('#ddlListNames').val();
var checkValues = $('input[name=c]:checked').map(function () {
return $(this).val();
}).toArray();
$.ajax({
url: '@Url.Action("Test1", "WordList")',
type: 'POST',
cache: false,
data: { selectedListID: item },
success: function (result) {
}
})
.done(function (partialViewResult) {
$("#divCheckBoxes").replaceWith(partialViewResult);
});
});
});
部分视图:
@model WLWeb.Models.MyModel
<div id="divCheckBoxes">
@foreach (var item in Model.vwWordList)
{
@Html.Raw("<label><input type='checkbox' value='" + @Html.DisplayFor(modelItem => item.Word) + "' name='c'> " + @Html.DisplayFor(modelItem => item.Word) + "</label> ");
}
</div>
控制器:
[AcceptVerbs(HttpVerbs.Post)]
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public PartialViewResult Test1(MyModel vm, string[] words, string moveToListID, string selectedListID)
{
int listNameID = Convert.ToInt32(moveToListID);
List<vwWordList> lst = db.vwWordLists.Where(s => s.Word.StartsWith("wa") && s.ListID == listNameID).ToList();
vm.vwWordList = lst;
return PartialView("Partial1", vm);
}
查看:
@Html.DropDownListFor(x => Model.FilterViewModel.MoveToListNameID, Model.FilterViewModel.MoveToListNameList,
new { @id = "ddlMoveToListNames", style = "width:100px;" })
答案 0 :(得分:1)
来自jquery页面
dataType(默认值:Intelligent Guess(xml,json,script或html)) 类型:字符串 您期望从服务器返回的数据类型。如果没有指定,jQuery将尝试根据响应的MIME类型推断它(XML MIME类型将产生XML,在1.4 JSON中将产生一个JavaScript对象,在1.4脚本中将执行脚本,其他任何东西将是以字符串形式返回)。可用类型(以及作为成功回调的第一个参数传递的结果)。
http://api.jquery.com/jquery.ajax/
使用dataType:json expect json,你的app返回html
更改数据类型:&#39; json&#39;到dataType:&#39; html&#39;