【问题标题】:Avoid wrapping something in HTML tags within a View避免在视图中用 HTML 标记包装某些内容
【发布时间】:2014-04-15 14:11:55
【问题描述】:

在 MVC 4 中,我经常需要将 C# 输出代码包装在 HTML 标记中,以防止 .NET 引发错误。通过显示更容易解释,所以这里是代码:

<li onclick="alert('@pub.URL');" data-jstree='{"icon":"@Url.Content("~/Images/blue-folder.png")"}'>
  @if (pub.DescriptionLongerThan50Chars)
  {
     pub.DescriptionCropped
  }
  else
  {
     //
  }
</li>

这会引发“仅赋值、调用、递增..”错误。简单的解决方案是将pub.DescriptionCropped 包裹在&lt;span&gt; 中,但如果我不必这样做,我宁愿不这样做。

有没有办法避免这种情况?

【问题讨论】:

  • 是的,我认为是。我进行了搜索,但似乎找不到合适的术语。
  • 我总是想弄清楚是回答一个问题(就像这里的人一样)并获得声望点更好,还是指出一个重复的问题,而一无所获。但这是为了 SO 的更大利益。
  • 真的吗?我用我的搜索词找不到您发布的主题。希望将来有人会使用我最初使用的搜索词找到这篇文章。如果 Stackoverflow 的目的是成为一个整洁的线程存储库,那我就错了,但如果它的目的是帮助最多的人,那么我认为回答更好。
  • 其实我认为这个决定属于版主,但我认为 SO 应该整洁。如您所见,我在您发布后不到 3 分钟内找到了副本。这甚至不难,我搜索了:razormvc代码标签内的文本节点并从谷歌获得了第一个链接

标签: c# asp.net asp.net-mvc asp.net-mvc-4


【解决方案1】:

另一个解决方案是在你的行前加上'@:`

< li onclick="alert('@pub.URL');" data-jstree='{"icon":"@Url.Content("~/Images/blue-     folder.png")"}'>

  @if (pub.DescriptionLongerThan50Chars)
  {
   @:pub.DescriptionCropped
  }
  else
  {
   //
  }
</li>

【讨论】:

    【解决方案2】:

    您可以使用 razor 以这种方式显示纯文本:

    @if (pub.DescriptionLongerThan50Chars)
      {
         @:pub.DescriptionCropped // now it is rendered as html
      }
      else
      {
         //
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-26
      • 1970-01-01
      • 1970-01-01
      • 2012-05-30
      • 1970-01-01
      相关资源
      最近更新 更多