Kendo UI MVC and ServiceStack Razor - No HtmlHelpers
本文关键字:No HtmlHelpers Razor ServiceStack UI MVC and Kendo | 更新日期: 2023-09-27 17:49:20
我正在尝试使用Kendo UI MVC包装器与ServiceStack Razor视图。
我遵循了剑道UI说明的指示,希望它能直截了当。
@Html。在我的cshtml页面中没有显示剑道扩展。
有没有人可以提供一些指导?
-
我按照Atanas korchestrv的要求更新了章节
<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?
<?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>
注意:以下内容并不打算反映对ServiceStack或KendoUI的负面看法。他们都是惊人的。这些产品本质上是不相容的。这个问题的预期目的是调查这种性质的可行性
通过查看剑道的源代码。在Mvc的详细介绍下,我总结出了剑道。Mvc不适合也不适合与ServiceStack Razor一起使用。
这是因为:
- ServiceStack的Razor不依赖于System.Web.Mvc和Kendo。Mvc重新引入了它ServiceStack有自己的类实现,比如HtmlHelper、ViewPage和其他关键类。Mvc依赖于System.Web.Mvc,相当于。
- 我还没有找到一个清晰的方法来轻松地分离剑道。Mvc对Mvc控制器的依赖(ServiceStack剃刀视图不使用)。希望能够简单地以一种类型安全的方式配置razor中的Widgets,使其呈现到html中,绑定到模型。
我将诉诸于编写我自己的助手,使用像这样的StackOverflow Q&A作为一种方法。
我遇到了同样的问题,但是通过向我的web.config
添加以下名称空间来解决它。
<add namespace="Kendo"/>
<add namespace="Kendo.Mvc"/>
<add namespace="Kendo.Mvc.Extensions"/>
<add namespace="Kendo.Mvc.Ui"/>
我想这里的关键是add namespace="Kendo.Mvc.Ui"
更新网页。
在Views文件夹中配置<add namespace="Kendo.Mvc.UI"/>
您需要在web中添加相关的名称空间。配置文件在Views文件夹中,而不是在主web中。配置文件在顶部文件夹。请仔细阅读说明书。