我正在尝试将带有许多代码隐藏webmethod
函数的Web表单页面转换为带有控制器的MVC视图。
我得到的数据不同。他们已经正确格式化了JSON,但webmethod返回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)
,我猜测它只是一个字符串,但它们都返回相同的非数据。 d方式。
答案 0 :(得分:0)
好的,所以我决定将数据包装在“d”中,这样我就可以在Ajax结果中有一个“data.d”。
但由于某些原因,当我通过以下方式发回数据时,日期格式不正确:
GetObjectRequest getObjectRequest;
getObjectRequest.SetBucket(bucket.c_str());
getObjectRequest.SetKey(keyName.c_str());
getObjectRequest.SetResponseStreamFactory([&destination](){
return Aws::New<Aws::FStream>(
"s3file", destination, std::ios_base::out); });
// getObjectRequest.SetDataReceivedEventHandler() <--- How do I use this?
GetObjectOutcome getObjectOutcome = SessionClient->GetObject(getObjectRequest);
if(getObjectOutcome.IsSuccess())
{
std::cout << "<AWS DOWNLOAD> Get FW success!" << std::endl;
}
else
{
std::cout << "<AWS DOWNLOAD> Get FW failed: " << getObjectOutcome.GetError().GetMessage() << std::endl;
exit(1);
}
他们变得怪异。
基本上我要做的就是:
return Json(thewrappeddata);
好像我在这里两次“jsonifying”数据,一次使用public class JSONReturn {
public object d;
public static object Wrap(object data) {
return new JSONReturn() { d = data };
}
}
var thedata = new TonsofData();
return Json(
JSONReturn.Wrap(
JsonConvert.SerializeObject(thedata,
new JsonSerializerSettings {
ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
}
)
)
);
,一次使用JsonConvert.SerializeObject()
(我认为序列化),但它似乎有效,现在我得到的是我需要和所有JS只是像以前一样工作。如果我遗漏Json()
,JsonConvert.SerializeObject()
会错误地格式化日期,这会导致各种各样的失败。