5

テレフォニーベースのアプリケーションでは、HTMLではなくVXMLCCXMLをホストするWebプロジェクトにVisual Studio 2010MVC3フレームワークを使用したいと思います。

MVC 3は、この種のアプリケーションに最適であるように思われます。これは、VXML/CCXMLで一般的に使用されているより広く使用されているjsp/Tomcatベースのアプリケーションの優れた代替手段だと思います。しかし、いくつかの厄介な問題があります。

  1. プロジェクトは、.cshtmlページをHTML(当然のことながら)、または[オプション]>[テキストエディター]>[HTML]>[検証]>[ターゲット]で設定したターゲット検証として検証しようとしますが、検証が必要になります。完全にオフにする方法が見つからないようです。それをオフにして、何百もの警告を防ぐ方法はありますか?またはさらに良いことに、CCXML / VXMLの独自のカスタム検証を作成しますか?
  2. Response.ContentType = "text/vxml";すべてのアクションメソッドを記述せずに、すべてのビューのcontent-typeを「text / vxml」に自動的に設定する方法はありますか?
4

3 に答える 3

8

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());

.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>

.vxmlこれで、ビューの拡張機能として使用できます。Visual Studioは拡張子を認識しないため、.vxml拡張子を含むファイルを開いても、警告が表示されることはありません。また、このカスタム拡張機能に構文の強調表示とIntellisenseを提供できるカスタムVSプラグインを作成することもできます。

于 2012-03-09T12:24:57.983 に答える
2

2の場合、ContentTypeを自動的に設定するカスタムActionResultを実装することをお勧めします。stackoverflowとgoogleには、これを実現する方法を正確に示す多くの例があります。

1の場合、[オプション]>[テキストエディタ]>[HTML]>[検証]の下にある[エラーの表示]オプションを無効にすることはできません。

于 2012-03-09T12:07:24.863 に答える
1

ASP.NET MVC 3、Razor、およびC#を使用してVoiceXMLアプリケーションを作成するためのフレームワークを持つVoiceModelと呼ばれるオープンソースプロジェクトがあります。再利用可能なダイアログコンポーネント(RDC)をサポートし、非常に柔軟性があります。このブログのソースコードとドキュメントには、その使用方法に関する例があります。

于 2012-03-09T13:40:02.367 に答える