1

私は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場合、私が望む結果が単なる文字列である場合、私はそれを間違っていますか?

4

2 に答える 2

2

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));
}
于 2013-02-24T19:51:16.273 に答える
0

MVCは、返されたプレーンな文字列をエスケープします。そのため、元の関数は。を返しますIHtmlString。を返すHtmlStringと、パイプラインは、結果に生のHTMLが含まれることを確実に期待していることを認識します。

于 2013-02-24T19:52:47.133 に答える