現在のコントローラーを表示します


127

私はView - _Editに住んでいNews M/V/Cます。

私は、再利用V/Mを経由してCategoryControllerのように:

return PartialView("/Views/News/_Edit.cshtml", model);

どのようにしView - _Editてコントローラー名をアラートできますか?

私が:

alert('@ViewContext. RouteData.Values["controller"].ToString()');

値は次のとおりです。News ただし、URLは次のとおりです。/Category/foobar

'Category'警告する値を取得する方法はありますか?ありがとう


あなたは持っていませんNewsControllerか?
ハンター

あなたのアクション投稿してくださいmethodロードしているpartialviewと何に存在する。controllermethod
ハンター

回答:


193

私はこれを私の部分的な見解に入れました:

@HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString()

同じ種類の状況で、部分ビューの実際の場所の代わりに、URLで説明されているコントローラー(Category for you、Product for me)が表示されます。

代わりにこのアラートを使用してください:

alert('@HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString()');

25
:Palpieによって以下の答えが(簡単に覚えておく)のショートカットです@ViewContext.RouteData.Values["controller"]
Laoujin

6
ただfyi、あなたは取得する必要はありませんHttpContext.CurrentRequest直接入手できます。
Serj Sagan

名前空間を含む完全なコントローラークラス名を取得することは可能ですか?また、ビュー名も表示できると便利です。
Johncl、2015年

3
ところで、["action"]アクションメソッドの名前が必要な場合は機能します。
Zapnologica

117

私はこのようにしていますが、おそらくASP.NET MVC 4のみです。

@ViewContext.RouteData.Values["controller"]

12
ソリューションが現在実行中のコントローラーを返すことに注意してください。したがって、ブラウザがControllerAをリクエストし、ControllerAがControllerBからの部分的なビューをレンダリングする場合、ソリューションはControllerBの名前を返し、Nicholas SizerソリューションはControllerAの名前を返します。
Thomas CG de Vilhena 14

最良の回答として受け入れられるべきです。これはASP.NET Core 2.2でも引き続き機能します
Tom

21

すべてのコントローラーの基本クラスを作成し、ここに名前属性を配置します。

public abstract class MyBaseController : Controller
{
    public abstract string Name { get; }
}

ビューで

@{
    var controller = ViewContext.Controller as MyBaseController;
    if (controller != null)
    {
       @controller.Name
    }
}

コントローラーの例

 public class SampleController: MyBaseController 
    { 
      public override string Name { get { return "Sample"; } 
    }

Nameプロパティの設定方法を説明してください。
ErikE 2016


5

ただ使用する:

ViewContext.Controller.GetType().Name

これにより、コントローラ全体の名前が表示されます


2

フォルダからをCategoryControllerロードしているにもかかわらず、あなたはまだあなたのコンテキストにいます。PartialViewViews/News


0

以下のコードのいずれかを使用して、コントローラー名を取得できます

@HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString();

MVC 3を使用している場合は、

@ViewContext.Controller.ValueProvider.GetValue("controller").RawValue
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.