私はサーバーサイドオブジェクトを持っています。私の見解の内部属性 'data'がレンダリング時に破損することがあります
public class OptionRelation
{
public intOptionId { get; set; }
public string Type { get; set; }
public string Child { get; set; }
public string Peer { get; set; }
}
、私は次の操作を行います。
//where relations is a List<OptionRelation>
var a = relations.FindAll(r => r.OptionId == option.OptionID);
string data_relation = "";
if(a.Count > 0)
{
data_relation = "data-relation=" + Json.Encode(a);
}
<input type="checkbox" @data_relation />
は@dataは、私はほとんどの時間を期待する道を埋めます属性。しかし、時にはそれが壊れます。私がFireBugで開くと、<input>
の属性はすべてゴミです。私が考えることができるのは、データ・リレーションの長さが壊れたときに、残りのケースがやや長くなるということだけです。特に、データ関係が次のようになったときに破損します。
data-relation="[{"OptionId":80,"Type":"required_1","Child":"#1625, #1626, #1627","Peer":""}]"
これが壊れている理由は何ですか?解決策:大量のコードを書き直し、最終的にカスタムHTMLヘルパーを使用し、ダーリンのコードをHTMLヘルパーに部分的に利用するようにしました。あなたはちょうどこのように、二重のHTMLエンコードを実行カミソリを避けるために、属性にHtml.Raw
を使用する必要が
Html.AttributeEncodeラインがnull参照の例外がスローされます。 – Dimskiy
私は実際には@helperでApp_Codeフォルダに持っていますが、それについて言及していません。しかし指摘してくれてありがとう! – Dimskiy
この行はまだクラッシュしています:Html.AttributeEncode(Json.Encode(a))オブジェクトがnullです – Dimskiy