我对我的MVC项目进行了故障排除。我正在尝试这样做:
在视图上我在jqgrid上加载一些数据,并根据用户的一些选择,我将这些选择保存在javascript VAR上,并通过$ post将其传递给控制器的Action,该操作应该调用它自己的视图并加载我之前传递的数据。
传递数据工作正常,但是当数据到达新视图(第二个)时,它根本不加载;我做了一个调试来确认数据是否到达第二个视图,但页面没有显示。
以下是我的javascript代码:
$.post("/MyController/MyAction", { strParams: myParam });
这是我的控制器
public ActionResult MyAction(string[] strParams){... return View(myobject);}
这是我的第二个视图标题:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/SiteIC.Master" Inherits="System.Web.Mvc.ViewPage<object[]>" %>
...
我没有看到问题出在哪里,除了第二个没有显示的视图外,一切都通过了。
答案 0 :(得分:2)
您希望视图加载到哪里?当你这样做
$.post("/MyController/MyAction", { strParams: myParam });
这将简单地发布到控制器操作并且不对结果执行任何操作(您可以确认使用FireBug执行AJAX调用)。如果你想对控制器动作返回的结果做一些事情,你可以试试这个:
$.post("/MyController/MyAction", { strParams: myParam }, function(result) {
// result variable will contain the HTML rendered by the action
});
此外,如果您打算将生成的HTML注入到DOM中,您的控制器操作需要返回部分视图而不是完整视图:
public ActionResult MyAction(string[] strParams)
{
// ...
return PartialView("~/Views/MyController/MyAction.ascx", myobject);
}
答案 1 :(得分:1)
您只能使用您可以尝试的return View(myobject);
返回视图MyAction
return View("yourviewname", myobject);
善,
丹