0

asp.net mvc2 で次のようなコードを使用していました。

public class MyViewPage : ViewPage
{
    protected override void OnPreInit(EventArgs e)
    {
        CustomerSettingData csd = GetCustomerData(_customerId);

        this.Theme = viewMetaData.Theme;
    }
 }

ログインした顧客に基づいてテーマを見つけ、テーマをレンダリングします。Razor Views でこの種のことを達成するにはどうすればよいですか。これを Razor ビューで使用しようとすると、エラー メッセージが表示されます。

System.Web.HttpCompileException (0x80004005): c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\59ad3d7b\f111dcde\App_Web_index.cshtml.e33b3359.tnkwzx_a.0.cs(79) : エラー CS0115: 'ASP._Page_Areas_ERP_Views_Products_Index_cshtml.Execute()': System.Web.Compilation.BuildProvidersCompiler.PerformBuild() で System.Web.Compilation.AssemblyBuilder.Compile() でオーバーライドする適切なメソッドが見つかりません System.Web.Compilation .BuildManager.CompileWebFile(VirtualPath virtualPath) at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context) 、VirtualPath virtualPath、ブール値 noBuild、System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean throwIfNotFound) at System.Web.Mvc.BuildManagerWrapper.System.Web.Mvc. System.Web.Mvc.BuildManagerViewEngine.FileExists(ControllerContext controllerContext, String virtualPath) の IBuildManager.FileExists(String virtualPath) System.Web.Mvc.VirtualPathProviderViewEngine.GetPathFromGeneralName(ControllerContext controllerContext, List) の IBuildManager.FileExists(String virtualPath)Mvc.BuildManagerWrapper.System.Web.Mvc.IBuildManager.FileExists(String virtualPath) で System.Web.Mvc.BuildManagerViewEngine.FileExists(ControllerContext controllerContext, String virtualPath) で System.Web.Mvc.VirtualPathProviderViewEngine.GetPathFromGeneralName(ControllerContext controllerContext, List)Mvc.BuildManagerWrapper.System.Web.Mvc.IBuildManager.FileExists(String virtualPath) で System.Web.Mvc.BuildManagerViewEngine.FileExists(ControllerContext controllerContext, String virtualPath) で System.Web.Mvc.VirtualPathProviderViewEngine.GetPathFromGeneralName(ControllerContext controllerContext, List)1 locations, String name, String controllerName, String areaName, String cacheKey, String[]& searchedLocations) at System.Web.Mvc.VirtualPathProviderViewEngine.GetPath(ControllerContext controllerContext, String[] locations, String[] areaLocations, String locationsPropertyName, String name, String controllerName, String cacheKeyPrefix, Boolean useCache, String[]& searchedLocations) at System.Web.Mvc.VirtualPathProviderViewEngine.FindView(ControllerContext controllerContext, String viewName, String masterName, Boolean useCache) at System.Web.Mvc.ViewEngineCollection.<>c__DisplayClassc.<FindView>b__b(IViewEngine e) at System.Web.Mvc.ViewEngineCollection.Find(FuncSystem.Web.Mvc.ViewResultBase.ExecuteResult での System.Web.Mvc.ViewResult.FindView(ControllerContext context) での System.Web.Mvc.ViewEngineCollection.FindView(ControllerContext controllerContext, String viewName, String masterName) での 2 ルックアップ、ブール値 trackSearchedPaths) (ControllerContext コンテキスト) System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) で System.Web.Mvc.ControllerActionInvoker.<>c_ DisplayClass1c.b _19() で System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter( System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)の IResultFilter フィルター、ResultExecutingContext preContext、Func 1 continuation) at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1c.<>c__DisplayClass1e.<InvokeActionResultWithFilters>b__1b() at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList1 フィルター、ActionResult actionResult)

このエラー メッセージを理解できず、解決策を修正できません。を使用する <pages pageBaseType="System.Web.Mvc.WebViewPage">と、例外が発生しません。この例外は、カスタム ビュー ページでのみ発生します。

適切なリンクまたはガイダンスは高く評価されます。

次のようにしようとすると、this.Theme利用できないことが通知されます。

public class MyViewPageForRazorView : System.Web.WebPages.WebPageBase
4

0 に答える 0