BG1*_*100 5 visual-studio-2010 vxml asp.net-mvc-3
我想将Visual Studio 2010 MVC 3框架用于托管VXML和CCXML的Web项目,而不是基于电话的应用程序的HTML.
MVC 3似乎非常适合这种应用程序,我认为它是通常用于VXML/CCXML的更广泛使用的基于jsp/Tomcat的应用程序的一个很好的替代品.但有一些烦恼:
Response.ContentType = "text/vxml";
在每个Action方法中写入?您可以根据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);
}
}
Run Code Online (Sandbox Code Playgroud)
并在Application_Start中声明自定义扩展:
RazorCodeLanguage.Languages.Add("vxml", new CSharpRazorCodeLanguage());
WebPageHttpHandler.RegisterExtension("vxml");
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new VXMLViewEngine());
Run Code Online (Sandbox Code Playgroud)
以及将识别.vxml
扩展名的web.config中的自定义构建提供程序:
<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>
Run Code Online (Sandbox Code Playgroud)
现在您可以使用.vxml
视图的扩展名.由于Visual Studio无法识别.vxml
扩展名,因此当您使用它打开文件时,它不会给您带来警告.您甚至可以创建一个自定义VS插件,可以为此自定义扩展提供语法突出显示和Intellisense.
归档时间: |
|
查看次数: |
690 次 |
最近记录: |