2009-07-21 7 views
2

L'aide BeginForm de MVC utilise la propriété Request.RawUrl lors de l'élaboration de l'action d'un formulaire. Je suis sûr que c'est généralement bien, mais cela me cause un problème. J'utilise un réécriteur d'URL sur mon site. Dans le global.asax j'ai le code suivant pour redresser les actions du réécriteur.Comment puis-je modifier la propriété Request.RawUrl?

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", "")); 
} 

Le problème est que le app.RewritePath n'affecte pas la propriété RawUrl donc quand l'aide BeginForm écrit l'action se termine avec l'embarqué « /rewritten.mvc » dans l'URL cible qui est incorrect. Je sais que je peux utiliser une surcharge dans la méthode BeginForm() pour cibler spécifiquement un contrôleur et une action, mais cela a ses propres inconvénients, et dans mon cas particulier, je ne peux pas le faire.

Dans ma méthode Application_BeginRequest, que peut-on faire pour modifier la sortie de la propriété RawUrl? (Je devrais mentionner que cette propriété n'a pas de setter.)

+0

Avez-vous trouvé une solution à ce problème? – Piedone

+0

@Piedone, désolé, je ne me souviens pas de ce que nous avons finalement fait. C'était à un ancien travail et je sais plus longtemps avoir accès au code source pour voir quelle était la solution finale. –

+0

Merci quand même. Malheureusement, j'ai maintenant exactement le même problème: http://stackoverflow.com/questions/23327413/asp-net-mvc-app-routes-breaking-when-rewritten-through-iis-url-rewrite – Piedone

Répondre

1

Vous ne pouvez pas modifier la propriété RawUrl. Avez-vous envisagé d'utiliser la fonctionnalité de routage intégrée à MVC au lieu d'utiliser un réécrivain externe?

Questions connexes