【问题标题】:Call MVC method from webpage in javascript在 javascript 中从网页调用 MVC 方法
【发布时间】:2014-04-03 11:03:50
【问题描述】:

我目前有一个 ASP.NET MVC 应用程序,在一个页面上我有以下 Ajax 调用:

$.ajax({
        url: "/Home/GetAuthCode/",
        type: "GET",
        contentType: 'application/json',

        success: function () {
        }
    });

这会在我的 ASP 应用程序中调用 ActionResult 方法:

public ActionResult GetAuthCode()
    {
        //Do Stuff
        Return View();
    }

我希望它在方法具有“完成的东西”后导航到视图,但是它不会返回到视图,而是在完成后返回到 ajax 调用。

如何从网页调用该方法并允许它重定向到指定的视图,因为 ajax 调用似乎没有这样做。

【问题讨论】:

  • 您的视图名称为GetAuthCode 是否存在并尝试设置contentType:html。此外,您可以在 ajax 成功中设置 window.location.href = '/Home/GetAuthCode/'
  • 这是不正确的。这意味着 GetAuthCode 将被调用两次,它很容易包含您不希望出现两次的功能。

标签: javascript jquery asp.net ajax asp.net-mvc


【解决方案1】:

如果你真的需要在javascript中做重定向,那么使用:

window.location.href = '/Home/GetAuthCode/';

【讨论】:

  • 这正是我所需要的,我必须等待 5 分钟然后我才能接受你的回答 :)
  • 请不要在 AJAX 成功调用的范围内这样做。
  • @ChristianDuvall 使用此代码我将不再需要 ajax 调用
  • 没错,那么为什么要使用 JavaScript 呢?为什么不只使用链接路由?
【解决方案2】:

如果您尝试导航到新页面,则根本不要使用 AJAX 调用,只需创建一个路由并转到它。

<a href="/Home/GetAuthCode">I just did something and went to the returned view.</a>

【讨论】:

  • 我将如何使用 javascript 调用它?你能把你的例子放到一个javascript函数中吗?
  • 为什么要使用javascript?这是一个简单的导航。使用 AJAX 调用某些东西的目的是您不想走开,您想采取行动然后在网站本身内进行一些动态更改。
【解决方案3】:

你可以在ajax的成功函数中简单地重定向

$.ajax({
        url: "/Home/GetAuthCode/",
        type: "Post",


        success: function (data) {
window.location.href= data.Url;

        }
    })

在控制器中

public ActionResult GetAuthCode()
    {
        //Do Stuff
        return Json(new { Url = "urlsing"});
    }

【讨论】:

    【解决方案4】:
    $.ajax({
             url: '@Url.Action("GetAuthCode", "Home")',
             data: { },
             type: "GET",
             contentType: 'application/json',
             success: function () 
             {
                if(result.yourValidationIsOk)
                {
                    document.location.href = '@Url.Action("RedirectAction", "Home")';
                }
                else
                {
                    alert("error occured");
                }
             }
          });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多