Razor 注意事项

1. @Href("~/")

~代表网站根目录。

@Href("~/")Code language: JavaScript (javascript)

输出网站根目录路径 /

用于拼接链接、css、js、图片地址,避免页面在不同层级下路径出错。

2. @Html.Raw()

Razor默认会自动HTML编码,把< > &等符号转义成普通文本。

  • @Html.Raw(内容)不做转义,直接输出原始HTML标签

示例:

@* 会渲染红色文字 *@
@Html.Raw(@"<font color='red'>红字</font>")

@* 不加Raw:直接把标签当成字符串原样显示到页面,不会渲染红色字体 *@
@("<font color='red'>红色文字</font>")Code language: HTML, XML (xml)

安全提醒:如果内容来自用户输入,不要直接用Html.Raw,会产生XSS注入漏洞。

3. Views文件夹下的 web.config

Views/web.config 是视图专用配置文件。
里面的 <namespaces> 节点,给全部cshtml视图批量导入命名空间,不需要每个页面写@using

<system.web.webPages.razor>
  <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.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.Optimization"/>
      <add namespace="System.Web.Routing" />
    </namespaces>
  </pages>
</system.web.webPages.razor>Code language: HTML, XML (xml)

要点:

  1. 在这里<add namespace="xxx"/>添加命名空间,所有视图生效。
  2. 修改此配置后,需要重启Visual Studio,智能提示才会刷新。
  3. 这是ASP.NET MVC5的配置;ASP.NET Core已经不再使用这套web.config配置。

示例

@{
    string htmlStr = "<font color='blue'>蓝色文字</font>";
}

根目录:@Href("~/")

@* 渲染html *@
@Html.Raw(htmlStr)

@* 转义,原样输出标签字符串 *@
@htmlStrCode language: HTML, XML (xml)

ASP.NET Core写法

  1. 根路径:@Url.Content("~/")
  2. 输出原始html:@Html.Raw() 仍然可用
  3. 批量命名空间:在 _ViewImports.cshtml 添加@using xxx,不再依靠web.config。

Previous:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注