我的应用程序有一个“显示所有评论”类似于Facebook中的一个。当用户点击“全部显示”链接时,我需要更新我的列表,其中最初有4条评论和所有评论。我会先显示一些代码,然后问一些问题:使用jQuery与ASP.NET MVC的帮助
jQuery:
ShowAllComments = function (threadId) {
$.ajax({
type: "POST",
url: "/Home/GetComments",
data: { 'threadId': threadId },
dataType: "json",
success: function (result) {
alert(result);
},
error: function (error) {
alert(error);
}
});
};
Home Controller:
// GET: /GetComments
[HttpPost]
public JsonResult GetComments(int threadId)
{
var comments = repository.GetComments(threadId).ToList();
return Json(comments);
}
问题:
当我试图GET而不是POST,我得到这个错误:“此请求已被阻止,因为敏感如果在GET请求中使用这些信息,可能会向第三方网站泄露信息。要允许GET请求,请将JsonRequestBehavior设置为AllowGet。“在进行这些Ajax请求时,通常建议使用POST而不是GET?如果不是,我如何才能使用GET?我在哪里设置JsonRequestBehavior AllowGet?
将其更改为POST后,现在出现此错误:序列化类型为'Models.Thread'的对象时检测到循环引用。我使用实体框架4,并且我读过在导航属性中添加[scriptignore]属性可以解决此问题,因此我添加了具有该属性的实体的部分类,它说“属性已经定义”。我如何处理这个问题是因为我无法直接修改EF4生成的代码。
我不知道答案,但你可以尝试在EF4上使用POCO对象吗?这应该摆脱任何可能造成这种情况的额外班级成员。 – 2010-10-07 22:21:43
这是我第一次尝试EF和MVC,所以我选择了默认值。我希望我现在可以做些什么来解决这个问题,因为我需要把这个网站拿出来,我不得不考虑在某个时候切换到POCO。 – Prabhu 2010-10-07 22:28:05
这可能不是真的......通常使用ORMs,POCO会被东西包裹...所以懒惰加载工作......这可能是导致这种循环引用问题的原因。 – CrazyDart 2010-10-07 22:29:59