重定向到同一控制器中的另一个操作方法时,URL不会更改

时间:2017-09-19 22:33:03

标签: ajax asp.net-mvc asp.net-mvc-4 url-routing

在myC#MVC项目中,我有一个'Home'控制器,如下所示,

控制器

public ActionResult Index()
{
    return this.View();
}

public ActionResult LoadVideo()
{
    return RedirectToAction("LoadVideoExt");
}

public ActionResult LoadVideoExt()
{
    return this.View();
}

我的问题是,运行代码时,我的网址就像http://localhost:51241/Home/Index一样。我的Index视图中有一个按钮,可以从那里调用LoadVideo我将重定向到另一个操作并加载该页LoadVideoExt。该过程工作正常,但最终视图不呈现,我的网址也没有相应更改(因为我期待http://localhost:51241/MyJob/LoadVideoExt)。我在这里有点困惑。有人可以帮助我或指出我在正确的道路上吗?

下面附带示例代码。

查看(Index.cshtml)

function uploadMedia() {

        linkUrl = '@Url.Action("LoadVideo", "Home", new { area = string.Empty })';


        var formData = new FormData($('#fromIndex')[0]);

        $.ajax({
            url: linkUrl,
            type: 'Post',
            data: formData,
            cache: false,
            contentType: false,
            processData: false,
            beforeSend: function () { },
            success: function (result) {
                alert(0);
            },
            xhr: function () {  // Custom XMLHttpRequest
                var myXhr = $.ajaxSettings.xhr();
                if (myXhr.upload) { // Check if upload property exists
                    // Progress code if you want
                }
                return myXhr;
            },
            error: function () {

            }
        });
    }

RouteConfig.cs

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
          name: "DefaultMultipleParams",
          url: "{controller}/{action}/{id}/{state}"
      );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}

查看(LoadVideoExt.cshtml)

@{
    ViewBag.Title = "LoadVideoExt";
}

<h2>Gotcha!</h2>

在运行代码时,假设我的网址与http://localhost:51241/MyJob/Index一样。我在“索引”视图中有一个按钮,可以从那里调用LoadVideo我将重定向到另一个操作并加载该页面LoadVideoExt。该过程工作正常,但最终视图不呈现,我的网址也没有相应更改(因为我期待http://localhost:51241/MyJob/LoadVideoExt)。我在这里有点困惑。有人可以帮助我或指出我在正确的道路上吗?

0 个答案:

没有答案