当首先使用带有数据注释的 MVC 代码时,如何在显示名称中包含 html 标记?
Posted
技术标签:
【中文标题】当首先使用带有数据注释的 MVC 代码时,如何在显示名称中包含 html 标记?【英文标题】:When using MVC code first with data annotations how do you include html markup in the display name? 【发布时间】:2013-04-04 23:31:30 【问题描述】:我正在将纸质表单转换为 MVC 4 网络表单。我的问题是一段包含链接到脚注的上标数字的文本。这就是我想要做的:
public class PaperFormModel
[Display(Name = "Full paragraph of question text copied straight
off of the paper form<a href="#footnote1"><sup>footnote 1</sup></a>
and it needs to include the properly formatted superscript
and/or a link to the footnote text.")]
public string Question1 get; set;
// more properties go here ...
创建模型后,我生成了控制器和相关视图。除了显示名称中的 html 标记被转换为 html 编码文本(即 <sup>1</sup>)外,一切正常。 view.cshtml中用于显示属性的代码就是自动生成的代码:
<div class="editor-label">
@Html.LabelFor(model => model.Question1)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Question1)
@Html.ValidationMessageFor(model => model.Question1)
</div>
我正在尝试弄清楚如何让脚注的 html 标记正常工作,或者我的方法是否有些错误,我应该以不同的方式来做?这是我的第一个 MVC 项目,我来自 asp.net 背景。
【问题讨论】:
【参考方案1】:我认为你应该尝试将你的 HTML 文本移动到资源中并为你的模型申请下一个代码:
public class PaperFormModel
[Display(ResourceType = typeof(PaperFormModelResources), Name = "Question1FieldName")]
public string Question1 get; set;
// more properties go here ...
创建资源文件:
- 如果Resources
文件夹不存在,请在您的解决方案中创建它。
- Right click on this folder in solution explorer -> Add -> Resource file
或 ... -> Add -> New item
并选择 resource file
- 将此文件命名为PaperFormModelResources
- 使用资源管理器添加名称为Question1FieldName
和值为Full paragraph of question text copied straight off of the paper form<a href="#footnote1"><sup>footnote 1</sup></a> and it needs to include the properly formatted superscript and/or a link to the footnote text.
的新条目。
编辑: 如果结果是您的 html 标记没有正确显示(它只是显示为纯文本),您可以使用this question 的答案,即:
<div class="editor-label">
@Html.Raw(HttpUtility.HtmlDecode(Html.LabelFor(model => model.Question1).ToHtmlString))
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Question1)
@Html.ValidationMessageFor(model => model.Question1)
</div>
希望对您有所帮助。
【讨论】:
如果您将 '@Html.Raw(HttpUtility...' 部分放入自己的答案中,我会将其标记为答案。 @Bakanekobrain,我已经在回答中应用了这些更改以适合您的问题:@Html.Raw(HttpUtility.HtmlDecode(Html.LabelFor(model => model.Question1).ToHtmlString))
ToHtmlString 是一个方法调用,所以需要括号。以上是关于当首先使用带有数据注释的 MVC 代码时,如何在显示名称中包含 html 标记?的主要内容,如果未能解决你的问题,请参考以下文章