在回调中获取原始URL

时间:2012-09-19 23:31:11

标签: c# asp.net-mvc-3

假设我在谈论ASP.NET MVC 3应用程序,那么场景就像

  1. 我浏览到返回视图的网址http://localhost:60088/Example?param1=test123
  2. 接下来,我单击一个按钮,该按钮触发对返回JSON字符串的URL http://localhost:60088/Example/DoSomethign的Ajax调用
  3. 所以,我的困境是在DoSomething控制器操作中我需要获取在第一步中传递的param1参数。

    我的第一步是做这样的事情:

    public ActionResult DoSomething()
    {
        ...
    
        Uri baseUrl = this.Request.UrlReferrer;
        // Somehow extract the parameter from baseUrl
    
        ...
    }
    

    但我不确定这根本不是一个好主意......

    问题:

    1. 可以安全地假设this.Request.UrlReferrer 总是拥有以非回调方式调用的网址(即使我在{{1}之后再制作了几个callbaks第一次回调)?

    2. 有没有更好的方法来实现我想要做的事情?

2 个答案:

答案 0 :(得分:3)

没有;你不能假设引用者总是存在。

相反,您应该将原始URL作为参数包含在AJAX请求中。

答案 1 :(得分:0)

在您返回视图的操作中,您可以将param1添加到ViewBag,如下所示:

public ActionResult Example(string param1)
{
    ViewBag.Param1 = param1;
    return View();
}

然后在ajax调用中,只需将ViewBag.Param1作为路由值传递。它有时可能是空的,但这不应该伤害任何东西。