我想在静态类ChardinHtml.DataIntro(字符串消息)中创建一个简单的函数。该函数应该呈现类似data-intro ='my message'的内容,我想以这种方式使用它:
<div @ChardinHtml.DataIntro("These are your site's settings")/>
。
(输出为<div data-intro="These are your site's settings"/>
)
我到底应该归还什么? 是字符串/编码字符串/ MvcHtmlString / MvcHtmlString里面有编码字符串吗?我该怎么做才能保护自己免受消息中的(')(撇号)等字符的影响?
代码如下所示:
public static string DataIntro(string msg)
{
string str = string.Format("data-intro='{0}'", msg);
return str;
}
答案 0 :(得分:0)
您可以创建一个HTML帮助器方法来渲染它。您可以返回MvcHtmlString
作为输出。在使用之前使用HttpUtility.HtmlEncode
对字符串进行编码
public static class MyCustomFancyHtmlExtensions
{
public static MvcHtmlString MyFancyAttr(this HtmlHelper helper, string msg)
{
msg = HttpUtility.HtmlEncode(msg);
return new MvcHtmlString(string.Format("data-intro ='{0}'", msg));
}
}
您可以使用using
语句在剃刀视图中包含命名空间后调用它
@usint YourNamespaceWhereYouDefinedTheMethod
<div class="test" @Html.MyFancyAttr("test'ing")> test</div>
虽然这回答了你的问题,但我不确定你的用例是什么,但是我的建议是直接在剃刀视图中编写数据属性,除非你在决定什么时需要一些复杂的逻辑/何时渲染。