2012-03-09 10 views
5

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

MVC 3は、この種のアプリケーションには理想的ですが、VXML/CCXMLで一般的に使用されている、より広く使用されているjsp/Tomcatベースのアプリケーションには最適です。

  1. プロジェクトはHTML(当然)、または任意のターゲットバリデーション私はオプション>テキストエディタ> HTML>バリデーション>ターゲットに設定されたが、それは強制としての私.cshtmlページを検証しようとします。しかし、厄介のカップルがあります私は検証を持っています。私はそれを完全に切る方法を見つけることができないようです。それをオフにして何百もの警告を防止する方法はありますか? CCXML/VXMLの独自のカスタム検証を記述してください。
  2. すべてのビューでコンテンツタイプを「text/vxml」に自動的に設定する方法はありますか?Response.ContentType = "text/vxml";を各アクションメソッドに記述する必要はありませんか?
+0

ポイント2 - ちょうど基本コントローラーの種類を使用して、おそらく、OnResultExecutingまたはOnActionExecuting –

+0

@AndrasZoltan:ああ、私は自分自身を考えていたはずです...ありがとう。 – BG100

答えて

8

あなたはかみそりビューエンジンに基づいてカスタム・ビュー・エンジンを作成し、カスタムを登録することができあなたの意見のための拡張機能:

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

とRECOます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使用することができます:.vxml拡張子をgnize。 Visual Studioは.vxml拡張子を認識しないため、ファイルを開くと警告が表示されません。また、このカスタムエクステンションの構文ハイライトとIntellisenseを提供できるカスタムVSプラグインを作成することもできます。

+0

まさに私が何をしたのか....ありがとう! – BG100

2

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

は、あなただけの下に「表示エラー」オプションを無効にすることはできません「オプション>テキストエディタ> HTML>検証」

1

open source project called VoiceModelには、ASP.NET MVC 3、Razor、C#を使用してVoiceXMLアプリケーションを作成するためのフレームワークがあります。 Reusable Dialog Components(RDC)をサポートしており、非常に柔軟です。 examples in the source codeと、this blogでの使用方法に関するドキュメントがあります。

関連する問題