Помощник MVC BeginForm использует свойство 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? (Полагаю, я должен упомянуть, что у этого свойства нет сеттера.)