我正在尝试使用一些Razor功能创建一个网站,但不使用Visual Studio。主要原因是我目前主要使用的是Mac,我想使用Coda来编辑页面。
从数据库访问的角度来看,我不需要可编程的网站,但是我想使用RenderPartial,这样我就可以分割页面并实现一些常用的功能,比如菜单等等。上。
所以,我尝试了以下内容:
@DateTime.Now
这显示了当前的日期和时间,因此剃刀引擎显然就会执行。
然后我尝试了以下代码:
@Html.RenderPartial("menu.cshtml")
我收到此错误消息:
c:\ inetpub \ drip \ dev2 \ index.cshtml(1,12):错误CS1061:'System.Web.WebPages.Html.HtmlHelper'不包含'RenderPartial'的定义,也没有扩展方法'RenderPartial '可以找到'System.Web.WebPages.Html.HtmlHelper'类型的第一个参数(你是否缺少using指令或汇编引用?)
显然,标识符Html
指的是与我预期不同的类。
那么,有没有关于如何做到这一点的教程?它有可能吗?
此代码:
@Html.GetType().FullName
输出:
System.Web.WebPages.Html.HtmlHelper
我不需要使用Html
作为标识符,如果我可以创建自己的变量引用正确的对象/类型/类实例,那对我来说已经足够了。
答案 0 :(得分:4)
显然,标识符Html指的是与我预期不同的类。
是的,它指的是WebPages使用的System.Web.WebPages.Html.HtmlHelper。在ASP.NET MVC中,它是System.Web.Mvc.HtmlHelper类。
模板的基类是WebPage类,而在ASP.NET MVC中,它是WebViewPage类。
但是,由于您使用的是WebPages,因此您只能依赖它定义的方法。例如,如果您想要包含部分内容,则可以执行以下操作:
~/_SiteLayout.cshtml
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>test</title>
</head>
<body>
@RenderBody()
</body>
</html>
~/Default.cshtml
:
@{
Layout = "~/_SiteLayout.cshtml";
Page.Title = "Welcome to my Web Site!";
}
<div>Welcome</div>
@RenderPage("Menu.cshtml")
~/Menu.cshtml
:
@{
Layout = null;
}
<div>Some menu</div>
web.config
:
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
</configuration>
您可以查看WebPages documentation。那里有很多教程。
答案 1 :(得分:0)
您似乎需要在web.config中引用System.Web.Mvc.Html
才能使用RenderPartialExtensions class中的扩展方法
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>