2

拡張メソッドからレンダリングされているファイル名 (またはビュー名) を取得する方法はありますか? 何かのようなもの :

public static string Something<T>(this System.Web.Mvc.HtmlHelper<T> helper, int value)
{
     string viewName = ...; // ???
     ...
     return someValueFromViewName;
}

**編集**

提案された質問の答え:

var webPage = htmlhelper.ViewDataContainer as WebPageBase;
var virtualPath = webPage.VirtualPath;

は機能せ、この質問に対する回答ではありません。呼び出し時にレンダリングされるスクリプトが必要です。部分的なものであれば、その部分的な名前が必要です。これらの 2 行は、コントローラーからレンダリングされるビューのみを返し、呼び出し時にレンダリングされるビュー スクリプトを返すとは限りません。

**編集 2 **

これら機能しません。それらはすべて同じ値を返します。拡張メソッドを呼び出すビュー スクリプト (部分) ではなく、コントローラーのビュー スクリプト。

var view = htmlhelper.ViewContext.View as BuildManagerCompiledView;
var virtualPath = webPage.ViewPath;
4

2 に答える 2

0

ビューはコンパイルされるので、現在のコール スタックを調べて、どの部分ビューがレンダリングされているかを判断できるようにする必要があると思います。

コードを呼び出している部分ビュー コードの名前を取得することは、呼び出しているメソッドの名前を取得することとほとんど同じです。

于 2013-05-22T21:26:47.947 に答える