2012-03-10 7 views
0

HttpContext.Current.Request.RequestContext.RouteData.Values ["controller"] ToString()実際には現在のコントローラ名を返しますが、ユーザーが入力したときにそれを返します。RouteData.Values

たとえば、私のアプリには "ImageGallery"コントローラが含まれており、ユーザーがhttp://localhost/imagegalleryを入力すると、ImageGalleryではなくRouteData.Valuesから "imagegallery"が取得されます。

元のコントローラ名はどのように取得できますか?

答えて

0

おそらく、あなたのような...あなたのコントローラの実際のCLRインスタンスを取得し、あなたのビューに、そこから名前を取得...

@if (this.ViewContext.Controller is MyController) 
{ 
} 

と、おそらくそれの名前の「コントローラ」の部分を取り除くことができます

this.ViewContext.Controller.GetType().Name.Replace("Controller", "") 

PS:この記事を簡単にするために使用さ.Replace(string, string)が、それは.Substring(int, int)コールを使用するように、おそらく良いでしょう。

EDIT:また、あなたはビューではありませんでした場合はthis.GetType()はそれを行うことになる場合には、コントローラ、になるだろうけれども(コントローラコンテキストから現在のコントローラを取得

0

通常は問題ではないため、ユーザーが入力した内容を取得します(unless you are Linux/Unix)。しかし、あなたの問題が適切に解決していないルートを扱う場合は、おそらくthis StackOverflow questionがお探しですか?

+0

私がしたいことができます。 –

+0

私は、あなたが入力したものを取得したときにこれを変更できるとは思わない。私が見てきた最良の提案は、正規表現を使用してケースを処理することである。 –

関連する問題