你可以写基础上,Razor视图引擎的自定义视图引擎和注册自定义扩展您的观点:
public class VXMLViewEngine : RazorViewEngine
{
public VXMLViewEngine()
{
ViewLocationFormats = new[] { "~/Views/{1}/{0}.vxml", "~/Views/Shared/{0}.vxml" };
MasterLocationFormats = new[] { "~/Views/{1}/{0}.vxml", "~/Views/Shared/{0}.vxml" };
PartialViewLocationFormats = new[] { "~/Views/{1}/{0}.vxml", "~/Views/Shared/{0}.vxml" };
FileExtensions = new[] { "vxml" };
}
protected override IView CreateView(ControllerContext controllerContext, string viewPath, string masterPath)
{
controllerContext.HttpContext.Response.ContentType = "text/vxml";
return base.CreateView(controllerContext, viewPath, masterPath);
}
}
和申报的Application_Start自定义扩展:
RazorCodeLanguage.Languages.Add("vxml", new CSharpRazorCodeLanguage());
WebPageHttpHandler.RegisterExtension("vxml");
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new VXMLViewEngine());
,并在web.config中的自定义生成提供程序将RECO gnize的.vxml
扩展:
<compilation debug="true" targetFramework="4.0">
<assemblies>
...
</assemblies>
<buildProviders>
<add extension=".vxml" type="System.Web.WebPages.Razor.RazorBuildProvider, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</buildProviders>
</compilation>
现在你可以使用.vxml
作为扩展的意见。由于Visual Studio无法识别.vxml
扩展名,因此当您用它打开文件时,它不会打扰您的警告。你甚至可以创建一个自定义VS插件,为这个自定义扩展提供语法突出显示和Intellisense。
对于第2点 - 只是使用基本控制器类型和覆盖,也许,OnResultExecuting或OnActionExecuting – 2012-03-09 11:54:04
@AndrasZoltan:啊是的,我应该想到这个我自己......谢谢。 – BG100 2012-03-09 12:06:24