我想替換我的MVC.GRID使用JQuery Datatable但它並不像看起來那麼容易。我在網上搜索了一些例子,但沒有太多與MVC。 唯一一個我發現它專注於服務器端操作,我不需要,因爲我的數據並不那麼龐大。MVC DataTable複雜對象
問題:
基於2個參數,我想獲得用戶的名單和數據表
public class User
{
public Address Address { get; set; }
public UID UID { get; set; }
public String Name { get; set; }
public Prof Prof { get; set; }
}
顯示它們在這裏,我如何讓用戶從數據庫:
public ActionResult Prov(int id,int cityId)
{
var users =
Uow.Users.GetAllByIdAndCityId(id,cityId).ToList();
return Json(new
{
data = users
}, JsonRequestBehavior.AllowGet);
}
在我的看法
<table id="ProvTable">
<thead>
<tr>
<th>Name</th>
<th>City Name</th>
<th>UID Code</th>
<th>Title</th>
</tr>
</thead>
</table>
這裏是我如何訪問nasted對象在Ajax調用
$(document).ready(function() {
$.ajax({
url: '/Users/Prov',
method: 'post',
datatype: 'json',
success: function(data) {
$('#ProvTable').DataTable({
data: data,
columns: [
{ 'data': 'Name' },
{ 'data': 'Address.City.Name' },
{ 'data': 'UID.Code' },
{ 'data': 'Prof.Title' },
]
});
}
});
});
我的代碼不能正常工作,我失去了很多東西 我的問題:
- 我如何可以傳遞參數? (有存儲在ViewBag
- 如何訪問nasted對象
- 是將我的列表,以JSON正確的方式
- 我缺少什麼,使其工作
PS:?我得到了以下錯誤:當我調用返回JSON
A circular reference was detected while serializing an object of type 'System.Data.Entity.DynamicProxies.Address_303E2DDFF080BE1C1CCF72F05B5DEE54E141232835E91070AA59A7AC0D8E5DD3'.
public class Prof
{
public string Title{ get; set; }
public KOS KOS{ get; set; }
}
public class KOS
{
public Category Cat{ get; set; }
public string KosCode{ get; set; }
}
public class Category
{
public string Name{ get; set; }
public string CatCode{ get; set; }
}
public class UID
{
public string Name{ get; set; }
public string UIDCode{ get; set; }
}
public class Address
{
public City City{ get; set; }
public String Zip{ get; set; }
}
顯示你的'UID'和'Prof'模型。該消息表明'UID'和/或'Prof'包含一個屬性type是'User'(創建一個循環引用) –
我更新了我的問題,但在錯誤消息旁邊,我轉換爲JSON的方式是正確?還有我在視圖中調用數據表的方式?我怎樣才能傳遞參數? – Maro
您的模型中似乎沒有任何可能導致該錯誤的內容。但是因爲你只想顯示4個屬性,所以沒有必要通過線路發送所有東西,所以創建一個只包含你需要的4個屬性的匿名對象要好得多 –