【问题标题】:how to render html tag as string in C#如何在C#中将html标签呈现为字符串
【发布时间】:2013-02-24 19:48:47
【问题描述】:

我正在做一个用C#开发的项目,我对C#的了解并不广泛,我前几天才开始学习:)

我遇到了这个功能:

public static IHtmlString RenderEditData<T>(string linkText) where T : CorinaEntity
{
    string id = new IdGenerator().Generate<T>();

    return new HtmlString(String.Format("<a href=\"#\" data-corina='{{ \"id\" : \"{0}\", \"clrType\" : \"{1}\" }}'>{2}</a>", id, typeof(T).AssemblyQualifiedName, linkText));
}

上面返回了一个链接标签,当我第一次开始做这个项目时这很好,但现在我只需要data 属性作为字符串输出。所以我只是尝试了这个:

public static String RenderEditData<T>() where T : CorinaEntity
{
    string id = new IdGenerator().Generate<T>();


return String.Format("data-corina='{{ id : \'{0}\', 'clrType' : \'{1}\' }}", id, typeof(T).AssemblyQualifiedName);
}

事情是,而不是导致这个:

data-corina="{ "id" : "-[Model.Content]", "clrType" : "Model.Content, Model, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" }"

它返回如下内容:

data-corina="'{" id="" :="" &#39;-[model.content]&#39;,="" &#39;clrtype&#39;="" &#39;model.content,="" model,="" version="1.0.0.0," culture="neutral," publickeytoken="null'" }=""

显然,我做错了一些字符串转义,但我不知道该怎么做,也不会弄乱我需要的变量。有人可以为我指出正确的解决方案吗?如果我将public static IHtmlString RenderEditData 更改为public static String RenderEditData,如果我想要的结果只是一个字符串,我做错了吗?

【问题讨论】:

    标签: c# asp.net asp.net-mvc string escaping


    【解决方案1】:

    使用 Html.Raw 帮助器输出原始 HTML。

    或者,将字符串包装在 HtmlString: 中:

    public static String RenderEditData<T>() where T : CorinaEntity
    {
        string id = new IdGenerator().Generate<T>();
    
        return new HtmlString(
               string.Format("data-corina='{{ id : \'{0}\', 'clrType' : \'{1}\' }}", 
                                            id, 
                                            typeof(T).AssemblyQualifiedName));
    }
    

    【讨论】:

    • 我仍然得到一个奇怪的结果,和我第一次得到标签时的结果完全不同
    • 我不太明白“奇怪的结果”是什么意思,@Roland
    • 在不应该出现的地方有一些引号,但我只是想我错过了整个对象周围的环绕引号:"data-corina='{{ \"id\" : \"{0}\", \"clrType\" : \"{1}\" }}'" :)
    【解决方案2】:

    MVC 将转义您返回的任何纯字符串。这就是为什么您的原始函数返回IHtmlString。当您返回 HtmlString 时,管道知道您肯定希望结果包含原始 HTML。

    【讨论】:

      猜你喜欢
      • 2015-02-01
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 2021-11-14
      • 2013-07-23
      • 1970-01-01
      • 2018-08-30
      • 1970-01-01
      相关资源
      最近更新 更多