我有一個jQuery DataTable針對ASP.NET MVC服務器進行服務器端處理。在ASP.NET MVC中使用jQuery DataTable的正確AJAX模式是什麼?
要實現漸進式增強,將呈現HTML表,然後將其升級到DataTable。當DataTable進行AJAX調用以檢索更多數據時,它期望返回的JSON的元素與現有的表格列布局相關聯。
這似乎導致一些建築摩擦,這是因爲:
在初始頁面渲染:
- 該控制器將數據庫中的數據到的DTO,並建立ViewData的模型。
- 的的ViewPage變換的ViewData模型轉換成HTML與的HtmlHelper的幫助等
Duriung AJAX更新:
- 該控制器將數據庫中的數據爲表單元格數據,超鏈接等
- DataTable將返回的數據直接渲染到表格單元格中。
的這裏的一點是,現在,控制器便被迫知道有關表呈現佈局,當它的責任應該限於傳回的DTO。
這是什麼正確模式?我如何支持AJAX調用並遵守控制器中的單一職責主體?
一些清晰:
我的DTO有三個屬性:
public class AccountListing
{
public int Id { get; set; }
public string AccountCode { get; set; }
public string AccountName { get; set; }
}
呈現的數據表有四列:
+--------------+--------------+------+------+
| Account Code | Account Name | View | Edit |
+--------------+--------------+------+------+
| 12345 | FooBar Inc. | Link | Link |
+--------------+--------------+------+------+
的的ViewPage呈現3財產DTO成4列表。 如果Controller返回與AJAX JSON相同的3個屬性DTO,則數據表會報告缺少的列...數據表預計返回的JSON表示單元元素,而不是源數據。
目前我正在解決這個問題,使用jQuery數組轉換和自定義表格渲染,這有效地複製了ViewPage的邏輯。
有沒有其他的選擇?
ViewModel不是DTO,因此添加邏輯來創建鏈接。 – DarrellNorton 2010-12-06 18:30:12
您可以使用https://github.com/mcintyre321/mvc.jquery.datatables執行此操作,請參閱wiki中的「自定義列呈現」 – mcintyre321 2016-07-26 09:04:40