我试图让一个页面呈现一个 mvc 下拉列表并在下拉列表中的值更改时呈现部分视图。在我单击局部视图中的按钮以保留在局部视图中所做的更改之前,它工作正常。
我的部分视图有以下代码 -
<script type="text/javascript">
$(function () {
$("#sortable, #sortable2").sortable({
connectWith: ".connectedSortable"
}).disableSelection();
});
$(function () {
$("button").button();
$(".submit").click(function () {
var list = "somedata";
var companyid = $("#myid").text();
$.ajax({
url: "/Controller/Action",
data: {
'values': list,
'id': myid
}
});
});
});
</script>
......
<div class="submit">
<button>Submit</button>
</div>
这是我的主要视图的代码 -
<script type="text/javascript">
function processList() {
var myid = $("#ddList").val();
$.ajax({
url: 'Controller/Action/',
data: {
'id': myid
},
datatype: 'html',
success: function (result) { success(result); }
});
}
function success(result) {
$("#partial").html(result);
}
</script>
@using (Html.BeginForm("Action", "Controller"))
{
@Html.DropDownListFor(x => x.SelectedValue, Model.MyEntity, new { @id = "ddList", onchange = "processList();" })
<div id="partial" style="height: 90%">
@Html.Partial("_MyPartialView")
</div>
}
我的控制器的代码如下 -
public ActionResult Action(int? id)
{
id = id ?? 1;
var vm = new MyViewModel
{
.....
};
return PartialView("_MyPartialView", vm);
}
public ActionResult PersistActivities(int myid, string values)
{
int result = _service.UpdateActivityOrderByCompany(companyid, values);
return new EmptyResult();
}
当我单击持久按钮时,我希望页面仅重新呈现部分视图。即使它什么也没做,那也没关系。实际发生的是控制器再次进入“Action”动作,然后引发渲染错误。如果我继续处理 jquery 错误,则只有部分视图数据会呈现在整个窗口中。
谁能指出我的渲染/控制器调用问题出在哪里?
我希望这是足够的信息。我不得不削减代码,但如有必要可以提供更多。
感谢您的任何想法。
EDTI -
我得到的错误是在用于呈现可排序列表的第一个函数的部分视图中 -
Microsoft JScript 运行时错误:预期对象
希望有帮助