如何在MVC 4中向URL添加条件查询字符串?

时间:2015-01-06 23:57:59

标签: asp.net-mvc-4 routing

我在向URL添加条件查询字符串时遇到了一些麻烦。

if the url == domain/controller/action then 
    do nothing

if the url == domain/controller/action?referenceNumber=xxxx then
    url = domain/controller/action?referenceNumber=xxxx&newParameter=yyyy

我试图在没有任何运气的情况下覆盖OnActionExecuting,而且我对RouteConfig的态度不是很强。

想法?

我试过以下

protected override IAsyncResult BeginExecute(RequestContext requestContext, AsyncCallback callback, object state)
{
   var path = requestContext.HttpContext.Request.RawUrl;

   if(myCondition)
   {
      requestContext.HttpContext.RewritePath(string.Format("{0}&newParameter={1}", path, getNewParameter()); 
   }

   return base.BeginExecute(requestContext, callback, state);
}

这会更新HttpContext.Request.Url,但不会反映浏览器中的网址。

如何克服这一挑战?任何线索?

1 个答案:

答案 0 :(得分:0)

我能够通过使用以下内容来解决问题...

获取方法

public ActionResult Action(string referenceNumber, string newParameter){...}

POST方法

public ActionResult Action(Object myObject, string newParameter){...}

结果是浏览器显示

  

域/控制器/动作referenceNumber = XXXX&安培; newParameter = YYYY