有没有办法在 html 属性中连接字符串?

新手上路,请多包涵

我正在使用 MVC3,我想使用局部视图来创建动态 DOM 元素。这是我目前的部分观点:

 @model MVCApp.ViewModels.TitlesViewModel

<div class="display-label">Name</div>
<div id="label"+"@Model.Id" class="display-field">@Model.InitValue</div>

Model.Id 是 1 但在浏览器的 HTML 中,我目前得到:

 id="label"+"1"

所以如果我尝试做类似的事情:

 alert($("#label1").text())

有一个警告框,里面什么也没有。

那么我怎样才能将这两个字符串加在一起形成一个连贯的字符串,该字符串可以被 jQuery(或 document.getElementByID(str) 就此而言)识别。

原文由 user558594 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 416
2 个回答

试试这个(已验证):

 <div id="@("label"+Model.Id)" class="display-field">@Model.InitValue</div>

原文由 Mrchief 发布,翻译遵循 CC BY-SA 3.0 许可协议

你要:

 <div id="label@Model.Id" ...

Razor 会将 @ 识别为代码的开头,执行它并在属性中就地呈现结果。

编辑:

这作为评论效果不佳,但这是我的一个 Razor 控件中的一行:

 <input type="text" readonly="readonly"
       class="display-field display-field-@ViewData.ModelMetadata.PropertyName"
       id="@((ViewData["id"] == null) ?
         ViewData.ModelMetadata.PropertyName : ViewData["id"])"
       value="@Proj.GetJobStatusValue(Model)" />

尝试在 @ 前添加一个连字符 (-)。 Razor 很可能认为它是一个电子邮件地址而不管它!

原文由 Steve Morgan 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题