使用 MVC 从 ASP 加载新视图
本文关键字:加载 新视图 ASP MVC 使用 | 更新日期: 2023-09-27 18:33:44
好的,所以情况是我在我的索引页面上。我有一个jQuery onClick事件,如下所示:
$('#example').on('click', 'tr', function (e) {
var aData = oTable.fnGetData(this);
showCampaign(aData);
});
我已经验证了这个函数是否按预期工作,并且 aData 最终填充了一个数组,其中包含来自被单击的表格行中每个单元格的数据。
我需要做的是,当甚至发生此单击时,将aData拍摄到我的MVC并加载一个可以用该数据填充的新视图。这就是我目前正在尝试的....
function showCampaign(aData) {
$.ajax({
type: "POST" ,
url: "Test/Show",
data : aData
}).done(function (response) {
window.location.href = response.Url;
}).error(function (jqxhr, textstatus, errorthrown) {
alert("didn't work");
});
};
此功能在一定程度上起作用...它确实向我的 MVC 发送了请求...但我没有看到数据通过(其空),当我返回响应字符串时,页面没有加载。
我的控制器类中的方法如下所示:
[HttpPost]
public ActionResult ShowCampaign(String[] aData)
{
var redirectUrl = new UrlHelper(Request.RequestContext).Action("TestView","Test");
return Json(new {Url : redirectUrl });
}
出于上述目的,TestView 是我要加载的视图的名称,Test 是控制器。
我在这里做错了什么..我试图理解 MVC,但我只是还不明白......指示灯没有亮起。
这里的问题是你没有命名参数。如果像你说aData是一个数组,你必须把它包装成一个对象。该属性应与控制器方法的参数名称匹配。
function showCampaign(aData) {
$.ajax({
type: "POST" ,
url: "Test/ShowCampaign",
data: { aData: aData }
}).done(function (response) {
window.location.href = response.Url;
}).error(function (jqxhr, textstatus, errorthrown) {
alert("didn't work");
});
};
您可能会发现有用的另一个提示。您可以使用Url.Action()
来生成您的 URL。http://msdn.microsoft.com/en-us/library/system.web.mvc.urlhelper.action(v=vs.108).aspx