【问题标题】:HTML/Razor setting up class for div via variable results in wrong classHTML/Razor 通过变量为 div 设置类会导致错误的类
【发布时间】:2015-12-11 16:14:42
【问题描述】:

在我的 MVC 视图剃须刀页面中,我有以下代码:

@if (TempData["notice"] != null)
{
  var clss = string.Concat("alert ", (TempData["noticeClass"]).ToString(), " alert-dismissible");
  <div class=@clss role="alert">
    <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
    <h3>@TempData["notice"]</h3>
  </div>
}

我的想法是我可以在控制器中设置引导警报的颜色以及消息。 例如 TempData["NoticeClass"] 设置为 "alert-success"。

如果我用 'var clss =' 在行上打断,那么我可以看到 clss 变量是正确构建的。 它显示:

"alert alert-success alert-dismissible"

但是当我运行页面并检查它时,我会看到:

<div class="alert" alert-success="" alert-dismissible="" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>
<h3>The email address 'blabla@bla.com' has been updated.</h3>

如您所见,div 的类仅设置为第一部分。 我只是在 Visual Studio 2015 中发现了一个错误,还是这是故意的,我做错了什么??

【问题讨论】:

  • 无意冒犯,但总是假设你做错了什么。您第一个注意到影响此类问题的错误的可能性是千万亿分之一。

标签: html asp.net-mvc-4 razor


【解决方案1】:

试试:

&lt;div class="@clss" role="alert"&gt;

即使它是一个字符串值,您仍然需要包含引号。

【讨论】:

  • 好收获。还有一个原因,您应该始终在属性周围加上引号,即使它们不是明确要求的。
  • 时机就是一切。
  • @KyleWilliamson:首先,Ian 是第一个回答的,即使只是勉强。其次,人们同时写出基本相同的答案并在没有意识到其他人已经发布的情况下发布的情况并不少见。
  • 谢谢!这是我第一次使用我创建的变量,使用。所以今天学到了一些新东西:-)
  • 没问题。很高兴看到您正在努力突破自己的极限!
【解决方案2】:

试试这个:

<div class="@clss" role="alert">

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-05
    • 2019-02-11
    • 2018-03-22
    • 2022-12-28
    • 2016-05-13
    • 2014-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多