我有一个页面,我在其中实现了对控制器的ajax调用,该控制器返回打包在JsonNetResult中的搜索结果。
我有很多javascript来处理返回包,迭代结果集中的每个项目并输出到页面。
但是,现在,我需要为页面加载时已知的单个项目实现这些相同方法的使用。我想将此信息传递给ViewData字典中的View。
但是,我不知道如何以这种方式使用Json.Net。
如果将对象填充到ViewData [“DeepLinkedMessage”]中,如何在页面加载时将Json.Net对象加载到本机json变量中?
我开始沿着这条道路前进:
var thisMessage = (from userMessageProduct .... more linq2sql stuff...);
bool success = (thisMessage.Count() == 0) ? false : true;
var returnPackage = new { success = success, results = thisMessage };
JavaScriptSerializer serializer = new JavaScriptSerializer();
ViewData["DeepLinkedMessage"] = serializer.Serialize(returnPackage);
它运作得很好。但我很快注意到,当我设置返回JsonNetResult的ajax调用时,我必须解决我已经解决的日期格式问题。我想使用我现在使用的完全相同的方法。
所以,我开始走这条道路:
JsonNetResult jsonNetResult = new JsonNetResult();
jsonNetResult.SerializerSettings.Converters.Add(new IsoDateTimeConverter());
jsonNetResult.Data = returnPackage;
ViewData["DeepLinkedMessage"] = jsonNetResult.ToString();
然后,在我看来:
<script type="text/javascript">
deepLinkedMessageId = '<%=ViewData["DeepLinkMessageId"] %>';
deepLinkedMessageRaw = '<%=ViewData["DeepLinkedMessage"]%>';
</script>
但是这回来了:
<script type="text/javascript">
deepLinkedMessageId = '1';
deepLinkedMessageRaw = 'WebUI.Controllers.JsonNetResult';
</script>
虽然我正在寻找类似的东西:
<script type="text/javascript">
deepLinkedMessageId = '1';
deepLinkedMessageRaw = '{"success":true,"results":[{"UserId":1,"InternalId":"1356935180","FirstName":"Scott","LastName":"Roberson","MessageId":1,"MessageText":"i just love your product!!!", "MessageCreateTime":"\/Date(1295289549930)\/","ProductId":5,"Flavor":"Almonds","ActivePixel":false,"ActiveClass":null,"TileNumber":0}]}';
</script>
帮助使用Json.Net吗?
感谢。
答案 0 :(得分:1)
好吧,我从here发现我可以这样做:
bool success = (thisMessage.Count() == 0) ? false : true;
var returnPackage = new { success = success, results = thisMessage };
ViewData["DeepLinkedMessage"] = JsonConvert.SerializeObject(returnPackage, new IsoDateTimeConverter());
&lt;擦手&gt; “问题解决了!”
答案 1 :(得分:0)
您应该设置视图以明确地实现您的模型:
Inherits="System.Web.View<YourModelName>"
然后在你看来你可以做到
Model.Property
我发现这更容易隔离问题发生的地方(加上viewdata可能是一个痛苦的屁股)