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。)
您是否找到了解決此問題的解決方案? – Piedone 2014-04-27 18:00:19