【发布时间】:2017-05-15 15:19:02
【问题描述】:
我正在尝试将带有许多代码隐藏 webmethod 函数的 Web 表单页面转换为带有控制器的 MVC 视图。
我返回的数据不同。他们已正确格式化 JSON,但 web 方法返回 JSON 如下:
{"d":"{\"Success\":true,\"Data\":{\"QuoteId\":340439,\"LoginId\":40,
控制器返回:
"{\"QuoteId\":340444,\"LoginId\":40,
它没有将它包装在 data.d 中,就像它设置为在 javascript 中处理一样,并且没有 Success 或 Data 对象。当我尝试解析它 ($.parseJSON(data)) 时,就像我对 webmethod 所做的那样,它在第 1 行消息中给出了旧错误。
我敢肯定,如果我使用它足够多,我可以让它与数据通过的方式一起工作,但我有很多页面需要在未来隐藏,我只是想知道是否有是一种让控制器像webmethod 那样格式化它的简单方法。
我很确定我知道为什么数据的格式不同,但如果我能以相同的方式返回数据,那会让我的生活更轻松。我试过返回一个JsonConvert.SerializeObject(obj),它只是一个字符串,还有一个Return Json(obj),我猜它也只是一个字符串,但它们都以相同的非data.d方式返回东西。
【问题讨论】:
-
那么,如果您希望它返回之前返回的相同 JSON,为什么不创建一个新对象来包装您的响应呢?
public class JsonResponseWrapper { public bool Success {get; set;} public object Data {get; set;} }类似的东西。 -
@mason 我一直在尝试这样做,但由于某种原因,它的数据格式并不相同。我可以让它基本上“看起来”相同,但它会在 webmethod 没有的 JS 中抛出错误。
标签: asp.net asp.net-mvc webforms webmethod jsonresult