Как я могу изменить свойство Request.RawUrl? - PullRequest
2 голосов
/ 21 июля 2009

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

1 Ответ

1 голос
/ 29 июля 2009

Вы не можете изменить свойство RawUrl. Вы смотрели на использование функциональности маршрутизации, встроенной в MVC, вместо использования внешнего переписывающего устройства?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...