Я хочу заменить свой MVC.GRID для использования JQuery Datatable, но это не так просто, как кажется. Я искал в Интернете несколько примеров, но не очень много с MVC. Единственное, что я нашел, это было сосредоточено на работе на стороне сервера, которая мне не нужна, так как мои данные не настолько огромны.MVC DataTable сложный объект
Издание:
на основе 2-х параметров, я хочу, чтобы получить список пользователей и отображать их на DataTable
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' содержит свойство, которое является типом 'User' (которое создает циклическую ссылку) –
Я обновил свой вопрос, но помимо сообщения об ошибке, это способ, которым я конвертирую в JSON верный? а также способ, которым я называю datatable в представлении? также как я могу передать параметр? – Maro
В ваших моделях ничего не может быть, что может вызвать эту ошибку.Но так как вы только хотите отобразить 4 свойства, нет смысла отправлять все по проводам, поэтому гораздо лучше создать анонимный объект, содержащий только 4 свойства, которые вам нужны –