Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Kendo UI MVC和ServiceStack Razor-无HTMLHelper_C#_Asp.net Mvc_Kendo Ui_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack - Fatal编程技术网 servicestack,C#,Asp.net Mvc,Kendo Ui,servicestack" /> servicestack,C#,Asp.net Mvc,Kendo Ui,servicestack" />

C# Kendo UI MVC和ServiceStack Razor-无HTMLHelper

C# Kendo UI MVC和ServiceStack Razor-无HTMLHelper,c#,asp.net-mvc,kendo-ui,servicestack,C#,Asp.net Mvc,Kendo Ui,servicestack,我正在尝试将Kendo UI MVC包装器与ServiceStack Razor视图一起使用 我已经按照的方向走了,希望它是直截了当的 @Html。不会在我的cshtml页面中显示剑道扩展 有人能给我一些指导吗 我按照Atanas Korchev的要求更新了这些章节 <compilation debug="true" targetFramework="4.5"> <!-- Service Stack Razor View Build Provider --> &

我正在尝试将Kendo UI MVC包装器与ServiceStack Razor视图一起使用

我已经按照的方向走了,希望它是直截了当的

@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>
    
    
    
  • (出于某种原因,它拒绝显示代码sampe,但我也将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}
'ServiceStack.Html.HtmlHelper'不包含'Kendo'的定义,并且最佳扩展方法重载'Kendo.Mvc.UI.HtmlHelperExtension.Kendo(System.Web.Mvc.HtmlHelper)'具有一些无效参数}
  • 我将@(Html.Kendo().DatePicker().Name(“生日”))粘贴到我的视图中,并根据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>

您需要将相关名称空间添加到视图文件夹的web.config文件中,而不是顶部文件夹的主web.config文件中。请仔细阅读说明。

注意:以下内容并不表示对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 razor视图不使用这些控制器)。hopewas能够简单地在razor中以一种类型安全的方式配置小部件,并将其呈现为html,绑定到模型

我将使用类似的方法编写自己的帮助程序。

我也遇到了同样的问题,但通过将以下名称空间添加到我的
web.config
中解决了这个问题

<add namespace="Kendo"/>
<add namespace="Kendo.Mvc"/>
<add namespace="Kendo.Mvc.Extensions"/>
<add namespace="Kendo.Mvc.Ui"/>


我认为这里的关键是
addnamespace=“Kendo.Mvc.Ui”

<add namespace="Kendo.Mvc.UI"/>


它们会自动继承到“视图”文件夹中。web.config就是这样工作的。。。问题特别在于尝试使用ServiceStack razor。。。它有自己的System.Web.Mvc.HtmlHelper实现,正如我上次编辑提到的,这是最好的做法。MVC的剑道UI很大程度上依赖于System.Web.MVC,您无法真正将其删除。为了补充,这里是Telerik的官方答案: