Javascript 在jQueryAjax调用之后,应用程序无法导航到我想要显示的ASP.NETMVC视图

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,

我使用jquery DataTables来显示一些表格数据,并且我还为所述jquery DataTables中的每一行放置了一个编辑链接,以便用户可以在需要时编辑与特定行关联的数据。(另外,我不知道如何在jQuery数据表中使用ASP.NET MVC Html帮助程序,因此我在下面的代码中使用Html链接)

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>
}))

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吗