C# 在回调中获取原始URL

C# 在回调中获取原始URL,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,假设我说的是一个ASP.NET MVC 3应用程序,该场景类似于 我浏览到URLhttp://localhost:60088/Example?param1=test123返回一个视图 接下来,我单击一个按钮,该按钮触发对URL的Ajax调用http://localhost:60088/Example/DoSomethign返回JSON字符串的 因此,我的困境是,在DoSomething控制器操作中,我需要获得在第一步中传递的param1参数 我的第一步是这样做: public ActionRes

假设我说的是一个ASP.NET MVC 3应用程序,该场景类似于

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

    我的第一步是这样做:

    public ActionResult DoSomething()
    {
        ...
    
        Uri baseUrl = this.Request.UrlReferrer;
        // Somehow extract the parameter from baseUrl
    
        ...
    }
    
    但我不确定这是否是个好主意

    问题:

  • 可以安全地假设
    this.Request.urlReferer
    始终具有以非回调方式调用的URL(即使我在
    \u DoSomething\u
    第一次回调后进行了多次回调)

  • 有没有更好的方法来完成我想做的事情


  • 没有;你不能假设推荐人总是存在的


    相反,您应该将原始URL作为参数包含在AJAX请求中;你不能假设推荐人总是存在的


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

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

    public ActionResult DoSomething()
    {
        ...
    
        Uri baseUrl = this.Request.UrlReferrer;
        // Somehow extract the parameter from baseUrl
    
        ...
    }
    
    public ActionResult示例(字符串param1)
    {
    ViewBag.Param1=Param1;
    返回视图();
    }
    

    然后在ajax调用中,只需将
    ViewBag.Param1
    作为路由值传递。它有时可能是空的,但这不会造成任何影响。

    在返回视图的操作中,您可以将
    参数1
    添加到
    视图包中,如下所示:

    public ActionResult DoSomething()
    {
        ...
    
        Uri baseUrl = this.Request.UrlReferrer;
        // Somehow extract the parameter from baseUrl
    
        ...
    }
    
    public ActionResult示例(字符串param1)
    {
    ViewBag.Param1=Param1;
    返回视图();
    }
    
    然后在ajax调用中,只需将
    ViewBag.Param1
    作为路由值传递。它有时可能是空的,但这不会有任何影响。

    :(…我怀疑这就是答案。遗憾的是,我需要在应用程序的多个不同回调中执行此操作,因此我可能会停止在会话对象上保留参数…无论如何,我将不回答此问题,以查看是否有其他想法:(…我想这就是答案。遗憾的是,我需要在应用程序的多个不同回调中执行此操作,因此可能我将结束会话对象上的参数持久化…无论如何,我将不回答这个问题,以查看是否出现其他想法