Javascript 在jQueryAjax调用之后,应用程序无法导航到我想要显示的ASP.NETMVC视图
我使用jquery DataTables来显示一些表格数据,并且我还为所述jquery DataTables中的每一行放置了一个编辑链接,以便用户可以在需要时编辑与特定行关联的数据。(另外,我不知道如何在jQuery数据表中使用ASP.NET MVC Html帮助程序,因此我在下面的代码中使用Html链接) jquery数据表javascript:Javascript 在jQueryAjax调用之后,应用程序无法导航到我想要显示的ASP.NETMVC视图,javascript,jquery,asp.net-mvc,model-view-controller,datatables,Javascript,Jquery,Asp.net Mvc,Model View Controller,Datatables,我使用jquery DataTables来显示一些表格数据,并且我还为所述jquery DataTables中的每一行放置了一个编辑链接,以便用户可以在需要时编辑与特定行关联的数据。(另外,我不知道如何在jQuery数据表中使用ASP.NET MVC Html帮助程序,因此我在下面的代码中使用Html链接) jquery数据表javascript: $("#resultCodeTable").dataTable({ "processing": true,
$("#resultCodeTable").dataTable({
"processing": true,
"serverSide": false,
"destroy": shouldDestroy,
"ajax": {
"url": "../Admin/LoadResultCodes",
"type": "GET",
"datatype": "json",
"data": function (data) {
data.actionCodeIDArg = actionCodeIDInQuestion;
}
},
....................................
............................
..............
columnDefs: [
{
{
targets: 1,
searchable: false,
orderable: false,
name: "EditResultCodeInQuestionReasonForArrears",
"data": "ID",
render: function (data, type, full, meta) {
if (type === 'display') {
data = '<a class="editResultCodeInQuestionReasonForArrears" href="javascript:void(0)" data-id="' + full.ID + '">Edit RFAs</a>'
}
return data;
}
},
....................................
............................
..............
function navigateToAParticularResultCodeAssociatedReasonForArrearsList(resultCodeTable_ID) {
console.log(resultCodeTable_ID);
$.ajax({
url: '../Admin/NavigateToAParticularResultCodeAssociatedReasonForArrearsList',
type: 'POST',
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: "{'" + "resultCodeTable_IDArg':'" + resultCodeTable_ID + "'}",
cache: false,
}).done(function (response, status, jqxhr) {
})
.fail(function (jqxhr, status, error) {
// this is the ""error"" callback
});
}
public ActionResult NavigateToAParticularResultCodeAssociatedReasonForArrearsList(int resultCodeTable_IDArg)
{
AParticularResultCodeAssociatedReasonForArrearsListViewModel aParticularResultCodeAssociatedReasonForArrearsListViewModel = new AParticularResultCodeAssociatedReasonForArrearsListViewModel();
aParticularResultCodeAssociatedReasonForArrearsListViewModel.ResultCodeTable_ID = resultCodeTable_IDArg;
return View("~/Areas/Admin/Views/Admin/AdminModules/Auxiliaries/AParticularResultCodeAssociatedReasonForArrearsList.cshtml", aParticularResultCodeAssociatedReasonForArrearsListViewModel);
}
@model Trilogy.Areas.Admin.ViewModels.Auxiliaries.AParticularResultCodeAssociatedReasonForArrearsListViewModel
@{
ViewBag.Title = "AParticularResultCodeAssociatedReasonForArrearsList";
}
<h2>AParticularResultCodeAssociatedReasonForArrearsList</h2>
}))
jQuery Ajax调用成功地调用了C#Controller的操作,因为我看到visualstudio的调试器的执行点到达了该控制器的操作,但是,它无法导航到我想要显示的视图
public ActionResult NavigateToAParticularResultCodeAssociatedReasonForArrearsList(int resultCodeTable_IDArg)
{
AParticularResultCodeAssociatedReasonForArrearsListViewModel aParticularResultCodeAssociatedReasonForArrearsListViewModel = new AParticularResultCodeAssociatedReasonForArrearsListViewModel();
aParticularResultCodeAssociatedReasonForArrearsListViewModel.ResultCodeTable_ID = resultCodeTable_IDArg;
aParticularResultCodeAssociatedReasonForArrearsListViewModel.RFACodeList = actionCodeResultCodeBusinessService.GetSpecificResultCodeRFACodeList(resultCodeTable_IDArg);
return View("~/Areas/Admin/Views/Admin/AdminModules/Auxiliaries/AParticularResultCodeAssociatedReasonForArrearsList.cshtml", aParticularResultCodeAssociatedReasonForArrearsListViewModel);
}
jquery/javascript:
$("#resultCodeTable").dataTable({
"processing": true,
"serverSide": false,
"destroy": shouldDestroy,
"ajax": {
"url": "../Admin/LoadResultCodes",
"type": "GET",
"datatype": "json",
"data": function (data) {
data.actionCodeIDArg = actionCodeIDInQuestion;
}
},
....................................
............................
..............
columnDefs: [
{
{
targets: 1,
searchable: false,
orderable: false,
name: "EditResultCodeInQuestionReasonForArrears",
"data": "ID",
render: function (data, type, full, meta) {
if (type === 'display') {
data = '<a class="editResultCodeInQuestionReasonForArrears" href="javascript:void(0)" data-id="' + full.ID + '">Edit RFAs</a>'
}
return data;
}
},
....................................
............................
..............
function navigateToAParticularResultCodeAssociatedReasonForArrearsList(resultCodeTable_ID) {
console.log(resultCodeTable_ID);
$.ajax({
url: '../Admin/NavigateToAParticularResultCodeAssociatedReasonForArrearsList',
type: 'POST',
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: "{'" + "resultCodeTable_IDArg':'" + resultCodeTable_ID + "'}",
cache: false,
}).done(function (response, status, jqxhr) {
})
.fail(function (jqxhr, status, error) {
// this is the ""error"" callback
});
}
public ActionResult NavigateToAParticularResultCodeAssociatedReasonForArrearsList(int resultCodeTable_IDArg)
{
AParticularResultCodeAssociatedReasonForArrearsListViewModel aParticularResultCodeAssociatedReasonForArrearsListViewModel = new AParticularResultCodeAssociatedReasonForArrearsListViewModel();
aParticularResultCodeAssociatedReasonForArrearsListViewModel.ResultCodeTable_ID = resultCodeTable_IDArg;
return View("~/Areas/Admin/Views/Admin/AdminModules/Auxiliaries/AParticularResultCodeAssociatedReasonForArrearsList.cshtml", aParticularResultCodeAssociatedReasonForArrearsListViewModel);
}
@model Trilogy.Areas.Admin.ViewModels.Auxiliaries.AParticularResultCodeAssociatedReasonForArrearsListViewModel
@{
ViewBag.Title = "AParticularResultCodeAssociatedReasonForArrearsList";
}
<h2>AParticularResultCodeAssociatedReasonForArrearsList</h2>
C#::(在我的AdminController.cs中)
public ActionResult NavigateToAParticularResultCodeAssociatedReasonForArrearsList(int resultCodeTable_IDArg)
{
AParticularResultCodeAssociatedReasonForArrearsListViewModel aParticularResultCodeAssociatedReasonForArrearsListViewModel = new AParticularResultCodeAssociatedReasonForArrearsListViewModel();
aParticularResultCodeAssociatedReasonForArrearsListViewModel.ResultCodeTable_ID = resultCodeTable_IDArg;
return View("~/Areas/Admin/Views/Admin/AdminModules/Auxiliaries/AParticularResultCodeAssociatedReasonForArrearsList.cshtml", aParticularResultCodeAssociatedReasonForArrearsListViewModel);
}
@model Trilogy.Areas.Admin.ViewModels.Auxiliaries.AParticularResultCodeAssociatedReasonForArrearsListViewModel
@{
ViewBag.Title = "AParticularResultCodeAssociatedReasonForArrearsList";
}
<h2>AParticularResultCodeAssociatedReasonForArrearsList</h2>
Razor/Html:(在my\Areas\Admin\Views\Admin\AdminModules\Auxiliants\aParticularResultCodeAssociatedReasonforArearsList.cshtml视图中)
public ActionResult NavigateToAParticularResultCodeAssociatedReasonForArrearsList(int resultCodeTable_IDArg)
{
AParticularResultCodeAssociatedReasonForArrearsListViewModel aParticularResultCodeAssociatedReasonForArrearsListViewModel = new AParticularResultCodeAssociatedReasonForArrearsListViewModel();
aParticularResultCodeAssociatedReasonForArrearsListViewModel.ResultCodeTable_ID = resultCodeTable_IDArg;
return View("~/Areas/Admin/Views/Admin/AdminModules/Auxiliaries/AParticularResultCodeAssociatedReasonForArrearsList.cshtml", aParticularResultCodeAssociatedReasonForArrearsListViewModel);
}
@model Trilogy.Areas.Admin.ViewModels.Auxiliaries.AParticularResultCodeAssociatedReasonForArrearsListViewModel
@{
ViewBag.Title = "AParticularResultCodeAssociatedReasonForArrearsList";
}
<h2>AParticularResultCodeAssociatedReasonForArrearsList</h2>
@model Trilogy.Areas.Admin.ViewModels.auxiliants.aParticularResultCodeAssociatedReasonforArearsListViewModel
@{
ViewBag.Title=“ArresultCodeAssociatedReasonforArresList”;
}
ArresultCodeAssociatedReasonforArresist
有人能告诉我如何更改代码,以便在jquery Ajax调用后显示视图吗?可能处于启用状态。完成函数您将在响应中获取视图,您需要获取该响应并将其绑定到控件。可能处于启用状态。完成函数您将在响应中获取视图,您需要获取该响应并将其绑定到您的控件您通过AJAX调用控制器,并确保它命中控制器操作方法,并且控制器返回一个视图,但这是处理AJAX调用(从控制器)返回的任何内容的代码: 你什么都没做,为什么它会在任何地方导航呢
您需要问自己一个更好的问题,而不是解决这个问题,那就是为什么要使用AJAX,然后导航到另一个页面。如果您要导航到一个全新的页面、新的URL,那么只需定期提交表单(不使用AJAX)或通过链接提交表单(用户将单击该链接)。如果您希望保持在同一页面上并刷新页面内容,请使用AJAX post。您通过AJAX调用控制器,并确保它命中控制器操作方法,控制器返回视图,但这是处理AJAX调用(从控制器)返回的内容的代码: 你什么都没做,为什么它会在任何地方导航呢
您需要问自己一个更好的问题,而不是解决这个问题,那就是为什么要使用AJAX,然后导航到另一个页面。如果您要导航到一个全新的页面、新的URL,那么只需定期提交表单(不使用AJAX)或通过链接提交表单(用户将单击该链接)。如果您想停留在同一页面上并刷新页面内容,请使用AJAX post。@yas ikeda、@codingyoshi、@code首先感谢您的建议 以下是我为解决问题所做的修改(请随时提出改进建议): 基本上,我必须创建两个单独的操作方法来解决问题。 在下面的jquery/Javascript代码中,请务必注意第一个操作方法“../Admin/RedirectTonAvigateToSpecificResultCodeAssociatedReasonforArearsList”
function navigateToAParticularResultCodeAssociatedReasonForArrearsList(resultCodeTable_ID) {
console.log(resultCodeTable_ID);
$.ajax({
url: '../Admin/RedirectToNavigateToAParticularResultCodeAssociatedReasonForArrearsList',
type: 'POST',
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: "{'" + "resultCodeTable_IDArg':'" + resultCodeTable_ID + "'}",
cache: false,
}).done(function (response, status, jqxhr) {
window.location.href = response.Url;
})
.fail(function (jqxhr, status, error) {
// this is the ""error"" callback
});
}
名为“../Admin/RedirectTonAvigateToSpecificularResultCodeAssociatedReasonforArrArsList”的第一个操作方法的目的是检索Json对象中的url
[HttpPost]
public ActionResult RedirectToNavigateToAParticularResultCodeAssociatedReasonForArrearsList(int resultCodeTable_IDArg)
{
var redirectUrl = new UrlHelper(Request.RequestContext).Action("NavigateToAParticularResultCodeAssociatedReasonForArrearsList", "Admin", new { resultCodeTable_IDArg = resultCodeTable_IDArg });
return Json(new { Url = redirectUrl });
}
第二个操作方法的目的是最终导航到我要显示的ASP.NET MVC视图
public ActionResult NavigateToAParticularResultCodeAssociatedReasonForArrearsList(int resultCodeTable_IDArg)
{
AParticularResultCodeAssociatedReasonForArrearsListViewModel aParticularResultCodeAssociatedReasonForArrearsListViewModel = new AParticularResultCodeAssociatedReasonForArrearsListViewModel();
aParticularResultCodeAssociatedReasonForArrearsListViewModel.ResultCodeTable_ID = resultCodeTable_IDArg;
aParticularResultCodeAssociatedReasonForArrearsListViewModel.RFACodeList = actionCodeResultCodeBusinessService.GetSpecificResultCodeRFACodeList(resultCodeTable_IDArg);
return View("~/Areas/Admin/Views/Admin/AdminModules/Auxiliaries/AParticularResultCodeAssociatedReasonForArrearsList.cshtml", aParticularResultCodeAssociatedReasonForArrearsListViewModel);
}
但是,我不喜欢这样一个事实,即我必须使用两种操作方法来导航到所需的asp.net mvc视图,因此,请随时提出改进建议,甚至是一个完全不同的更好的解决方案。@yas ikeda,@Codingyosi,@code first感谢您的建议 以下是我为解决问题所做的修改(请随时提出改进建议): 基本上,我必须创建两个单独的操作方法来解决问题。 在下面的jquery/Javascript代码中,请务必注意第一个操作方法“../Admin/RedirectTonAvigateToSpecificResultCodeAssociatedReasonforArearsList”
function navigateToAParticularResultCodeAssociatedReasonForArrearsList(resultCodeTable_ID) {
console.log(resultCodeTable_ID);
$.ajax({
url: '../Admin/RedirectToNavigateToAParticularResultCodeAssociatedReasonForArrearsList',
type: 'POST',
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: "{'" + "resultCodeTable_IDArg':'" + resultCodeTable_ID + "'}",
cache: false,
}).done(function (response, status, jqxhr) {
window.location.href = response.Url;
})
.fail(function (jqxhr, status, error) {
// this is the ""error"" callback
});
}
名为“../Admin/RedirectTonAvigateToSpecificularResultCodeAssociatedReasonforArrArsList”的第一个操作方法的目的是检索Json对象中的url
[HttpPost]
public ActionResult RedirectToNavigateToAParticularResultCodeAssociatedReasonForArrearsList(int resultCodeTable_IDArg)
{
var redirectUrl = new UrlHelper(Request.RequestContext).Action("NavigateToAParticularResultCodeAssociatedReasonForArrearsList", "Admin", new { resultCodeTable_IDArg = resultCodeTable_IDArg });
return Json(new { Url = redirectUrl });
}
第二个操作方法的目的是最终导航到我要显示的ASP.NET MVC视图
public ActionResult NavigateToAParticularResultCodeAssociatedReasonForArrearsList(int resultCodeTable_IDArg)
{
AParticularResultCodeAssociatedReasonForArrearsListViewModel aParticularResultCodeAssociatedReasonForArrearsListViewModel = new AParticularResultCodeAssociatedReasonForArrearsListViewModel();
aParticularResultCodeAssociatedReasonForArrearsListViewModel.ResultCodeTable_ID = resultCodeTable_IDArg;
aParticularResultCodeAssociatedReasonForArrearsListViewModel.RFACodeList = actionCodeResultCodeBusinessService.GetSpecificResultCodeRFACodeList(resultCodeTable_IDArg);
return View("~/Areas/Admin/Views/Admin/AdminModules/Auxiliaries/AParticularResultCodeAssociatedReasonForArrearsList.cshtml", aParticularResultCodeAssociatedReasonForArrearsListViewModel);
}
但是,我不喜欢这样一个事实,即我必须使用两种操作方法来导航到所需的asp.net mvc视图,因此,请随时提出改进建议,甚至是一个完全不同的更好的解决方案。是否要在浏览器上导航到/Admin/navigateAparticularResultCodeAssociatedReasonforArearsList?然后,将url设置为document.location.href就是您想要的。但这可能不是你的意思?@yas ikeda你能告诉我应该给document.location.href分配什么吗?
document.location.href='../Admin/navigateAparticularResultCodeAssociatedReasonforArearsList'
对不起,我忘了你在控制器上有参数。将id放入url参数中,就可以在控制器中得到它`document.location.href='../Admin/NavigateToaParticularResultCodeAssociatedReasonforArearsList?ResultCode='+resultCodeTable_IDArg='+ResultCode_IDID如果您不介意该id出现在url中,请改用表单。这可能会有帮助:查看底部的示例代码是否要导航到浏览器上的/Admin/NavigateToaParticularResultCodeAssociatedReasonForArrsList?然后,将url设置为document.location.href就是您想要的。“但那可能不是你的意思?”池田雅思,你能告诉我w吗