4

KendoUIMVCラッパーをServiceStackRazorViewsで使用しようとしています。

簡単にできることを期待して、剣道のUI手順に従って指示に従いました。

@Html。私のcshtmlページに剣道の拡張機能が表示されません。

誰かが親切にいくつかのガイダンスを提供できますか?

  • Atanas Korchevのリクエストに応じて、セクションを更新しました

    <compilation debug="true" targetFramework="4.5">
      <!-- Service Stack Razor View Build Provider -->
      <buildProviders>
        <add extension=".cshtml" type="ServiceStack.Razor.CSharpRazorBuildProvider, ServiceStack.Razor, Version=2.1.*, Culture=neutral" />
      </buildProviders>
      <assemblies>
        <add assembly="ServiceStack"/>
        <add assembly="ServiceStack.Razor"/>
        <add assembly="ServiceStack.Text" />
        <add assembly="Kendo.Mvc"/>
        <add assembly="WebApplication1" />
    <!-- MVC 3 Added at Atanas Korchev's request -->
    <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      </assemblies>
    </compilation>
    
  • (何らかの理由でコードサンプルの表示を拒否しますが、Mvc名前空間も正しいセクションに追加しました)

エラーがスローされるようになりました。

'ServiceStack.Html.HtmlHelper<dynamic>' does not contain a definition for 'Kendo' and the best extension method overload 'Kendo.Mvc.UI.HtmlHelperExtension.Kendo(System.Web.Mvc.HtmlHelper)' has some invalid arguments}
  • @(Html.Kendo()。DatePicker()。Name( "Birthday"))をビューに貼り付けて、このエラーを取得するAtanasの要求に従って、コンパイルを試みました。

  • ServiceStackのHtmlHemlperを処理するためのソースの変更なしでは解決策は不可能だと思いますか?

元のWeb.config

<?xml version="1.0"?>

<configuration>

  <!-- Separate config section for each at the bottom of web.config -->
  <configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    </sectionGroup>
  </configSections>

  <system.web>
    <compilation debug="true" targetFramework="4.5">
      <!-- Service Stack Razor View Build Provider -->
      <buildProviders>
        <add extension=".cshtml" type="ServiceStack.Razor.CSharpRazorBuildProvider, ServiceStack.Razor, Version=2.1.*, Culture=neutral" />
      </buildProviders>
      <assemblies>
        <add assembly="ServiceStack"/>
        <add assembly="ServiceStack.Razor"/>
        <add assembly="ServiceStack.Text" />
        <add assembly="Kendo.Mvc"/>
        <add assembly="WebApplication1" />
      </assemblies>
    </compilation>
    <httpRuntime targetFramework="4.5" />
  </system.web>

  <!-- Register ServiceStack to listen on root path of web server -->
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <handlers>
      <add path="*" name="ServiceStack.Factory" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" />
    </handlers>
  </system.webServer>


  <appSettings>
    <!-- Enables ServiceStack.Razor pages -->
    <add key="webPages:Enabled" value="false" />
  </appSettings>

  <!-- ServiceStack.Razor Config -->
  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="ServiceStack.Razor.ViewPage">
      <namespaces>
        <!-- Make these namespaces available to razor views-->
        <!-- Required for ServiceStack -->
        <add namespace="ServiceStack.Html" />
        <add namespace="ServiceStack.Razor" />
        <add namespace="ServiceStack.Text" />

        <!-- Business -->
        <add namespace="WebApplication1" />

        <!-- Kendo UI MVC Wrappers -->
        <add namespace="Kendo.Mvc.UI" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

</configuration>
4

4 に答える 4

1

Views フォルダーの web.config を次のように更新します。

<add namespace="Kendo.Mvc.UI"/>
于 2015-09-01T11:22:18.940 に答える
1

注: 以下は、ServiceStack または KendoUI のいずれかに対する否定的な意見を反映するものではありません。どちらも素晴らしいです。これらの製品は、本質的に互換性がありません。この質問の意図された目的は、この性質の実現可能性を調査することでした


Kendo.Mvc のソース コードを詳細に調べた結果、Kendo.Mvc は ServiceStack Razor での使用には適しておらず、望ましくないという結論に達しました。

それの訳は:

  • ServiceStack の Razor は System.Web.Mvc に依存せず、Kendo.Mvc はそれを再導入します
  • ServiceStack には、HtmlHelper、ViewPage、および Kendo.Mvc が System.Web.Mvc に相当するものに依存するその他の主要なクラスなどのクラスの独自の実装があります。
  • Kendo.Mvc の MVC コントローラー (ServiceStack のカミソリ ビューでは使用されません) への依存関係を簡単に分離する明確な方法をまだ見つけていません。モデルに関連付けられた html にレンダリングされるタイプセーフな方法で、かみそりで Widgets を簡単に構成できるようにすることが期待されていました。

このStackOverflow Q&A のようなものをアプローチとして使用して、独自のヘルパーを作成することに頼ります。

于 2012-12-23T10:12:56.790 に答える
-1

最上位フォルダーのメインの web.config ファイルではなく、 Viewsフォルダーの web.config ファイルに関連する名前空間を追加する必要があります。指示を注意深く読んでください。

于 2012-12-22T10:12:42.030 に答える