我想将VisualStudio2010MVC 3框架用于托管VXML和CCXML的web项目,而不是用于基于电话的应用程序。
MVC 3似乎非常适合这类应用程序,我认为它是更广泛使用的基于jsp/Tomcat的应用程序(通常用于VXML/CCXML )的一个很好的替代。但也有一些烦恼:
Response.ContentType = "text/vxml";?发布于 2012-03-09 12:24:57
您可以基于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中将识别.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不识别.vxml扩展名,所以当您用它打开一个文件时,它不会给您带来警告。您甚至可以创建一个定制的VS插件,为这个自定义扩展提供语法突出显示和Intellisense。
发布于 2012-03-09 12:07:24
对于2,我建议实现一个自定义ActionResult,它将自动设置ContentType。关于堆栈溢出和google,有很多例子将向您展示如何实现这一目标。
对于1,您不能仅在"Options>Text Editor>HTML>Validation“下禁用”显示错误“选项吗?
发布于 2012-03-09 13:40:02
有一个名为VoiceModel的开源项目,它有一个使用ASP.NET MVC 3、Razor和C#创建VoiceXML应用程序的框架。它支持可重用的对话框组件(RDC),并且非常灵活。有关于如何在源代码中的示例上使用它的源代码中的示例和文档。
https://stackoverflow.com/questions/9633537
复制相似问题