我正在尝试发送一个下拉列表的选定值给控制器,并检索回json数据。
当我调试时,参数很好地到达控制器,值被很好地检索,但在控制台上返回部分后,它说
“加载资源失败:服务器响应状态为500 (内部服务器错误)`”
这是我的控制器操作:(在WebContentsController
中)
[HttpGet]
public JsonResult GetWebContentTypeDetails (int id)
{
var details = db.WebContentTypeDetail.Where(x=>x.WebContentTypeID == id).ToList();
return Json(details, JsonRequestBehavior.AllowGet);
}
这是JS部件(打印到控制台进行测试)
$(document).ready(function () {
$("#WebContentTypeID").change(function () {
var ChangedID = $('#WebContentTypeID option:selected').val();
alert(ChangedID);
$.getJSON('/webcontents/GetWebContentTypeDetails/' + ChangedID, function (data) {
console.log(data);
})
});
});
编辑:
WebContentTypeDetail模型
public partial class WebContentTypeDetail
{
public int WebContentTypeDetailID { get; set; }
public int WebContentTypeID { get; set; }
public string DetailKey { get; set; }
public string Description { get; set; }
public Nullable<short> Rank { get; set; }
public virtual WebContentType WebContentType { get; set; }
}
WebContentType模型
public partial class WebContentType
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public WebContentType()
{
this.WebContent = new HashSet<WebContent>();
this.WebContentTypeDetail = new HashSet<WebContentTypeDetail>();
}
public int WebContentTypeID { get; set; }
public string DisplayName { get; set; }
public string CreatedByUserID { get; set; }
public System.DateTime CreateDate { get; set; }
public string LastEditedByUserID { get; set; }
public Nullable<System.DateTime> LastEditDate { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<WebContent> WebContent { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<WebContentTypeDetail> WebContentTypeDetail { get; set; }
}
发布于 2018-07-20 03:12:51
您不能直接从上下文查询结果返回实体列表,因为它们在大多数情况下是不可序列化的,特别是在您的情况下:实体具有循环引用。
您有两个选项:
var details = db.WebContentTypeDetail.Where(x=>x.WebContentTypeID == id)
返回Json(details.select(x=>new { //you data structure }).ToList(),返回视图模型并标记为[Serializable]
,然后将需要的数据返回给客户端:
return Json(details.select(x=>new YourViewModel {//您的数据结构}).ToList(),return Json
发布于 2016-06-23 17:04:21
试试这个:
$(document).ready(function () {
$("#WebContentTypeID").change(function () {
var ChangedID = $('#WebContentTypeID option:selected').val();
alert(ChangedID);
$.getJSON('/webcontents/GetWebContentTypeDetails?id=' + ChangedID, function (data) {
console.log(data);
})
});
});
As参数id应作为querystring传递。如果你使用的是mvc,那么url应该在@url.action中传递,所以它必须是
$(document).ready(function () {
$("#WebContentTypeID").change(function () {
var ChangedID = $('#WebContentTypeID option:selected').val();
alert(ChangedID);
var URL = @Url.Action("_GetWebContentTypeDetails", "webcontents");
$.getJSON(URL + '?id=' + ChangedID, function (data) {
console.log(data);
})
});
});
https://stackoverflow.com/questions/37985285
复制相似问题