2009-07-21 164 views
2

MVC的BeginForm助手在製作表單的動作時使用Request.RawUrl屬性。我相信這通常很好,但它對我造成了一個問題。如何更改Request.RawUrl屬性?

我在我的網站上使用URL重寫器。在global.asax中,我有以下代碼來理清重寫器的操作。

protected void Application_BeginRequest(object sender, EventArgs e) 
{ 
    var app = sender as HttpApplication; 
    if (app != null) 
    if (app.Request.AppRelativeCurrentExecutionFilePath.Contains("~/rewritten.mvc")) 
     app.Context.RewritePath(app.Request.Url.PathAndQuery.Replace("/rewritten.mvc", "")); 
} 

的問題是,app.RewritePath不影響RawUrl屬性,以便當BeginForm助手將其寫的「/rewritten.mvc」嵌入目標URL這是不正確結束的動作。

我知道我可以在BeginForm()方法中使用重載來專門針對控制器和動作,但這有它自己的缺點,在我的特殊情況下我不能這樣做。

在我的Application_BeginRequest方法中,可以做些什麼來改變RawUrl屬性的輸出? (我想我應該提到這個屬性沒有setter。)

+0

您是否找到了解決此問題的解決方案? – Piedone 2014-04-27 18:00:19

回答

1

你不能改變RawUrl屬性。你看過使用MVC內置的路由功能而不是使用外部重寫器嗎?