简单地说,我希望将我的对象中的属性序列化为字符串而不是HtmlString(它是)。
这里的推理是对象在json中序列化,而toString函数不返回对象的字符串内容,而是返回'[object Object]'。
或者,是否可以将属性标记为[Non-Serializable]并将其他属性替换为可序列化版本?
提前致谢
编辑: 示例代码:
[Serializable]
public MyObject
{
public int id= 0;
public string name = "myName";
public HtmlString WishIWasAString = new HtmlString("notAString");
public string fakeHtmlString
{
get { return WishIWasAString.ToString(); }
}
}
示例Json:
{
id: 0,
name: 'myName'
wishIWasAString: {}
fakeHtmlString: 'notAString'
}
答案 0 :(得分:1)
<script type="type/javascript">
var fooProperty = @Html.Raw(Json.Encode(Model.Foo));
</script>
或者如果您想将JSON序列化为javascript变量:
<script type="type/javascript">
var model = @Html.Raw(Json.Encode(Model));
alert(model.Foo.Bar);
</script>
答案 1 :(得分:0)
我找到了你问题的解决方案 使用这个类:
using System.Runtime.Serialization;
[DataContract]
public MyObject
{
[DataMember]
public int Id { get; set; }
[DataMember]
public string Name { get; set; }
public HtmlString MyHtmlContent { get; set; }
[DataMember(Name = "MyHtmlContent")]
private string serializedMyHtmlContent
{
get { return this.MyHtmlContent == null ? null : MyHtmlContent .ToString(); }
}
}
您将获得此JSON:
{
Id: 1234,
Name: "Chris",
MyHtmlContent: "<p>Hello word</p>"
}