我有个jQuery
DataTable
配置为针对ASP.NET MVC服务器进行服务器端处理。
为了实现渐进式增强,将呈现HTML表,然后升级到DataTable。当DATAtter进行Ajax调用以检索更多数据时,它期望返回的JSON元素与现有的表列布局相关。
这个
似乎
引起一些建筑摩擦,因为:
在初始页面呈现期间:
-
控制器将数据库数据转换为DTO并建立ViewData模型。
-
ViewPage在HtmlHelper等的帮助下将ViewData模型转换成HTML。
在AJAX更新期间:
-
控制器通过超链接等将数据库数据转换为表单元数据。
-
data table将返回的数据直接呈现到表单元格中。
这里的要点是,控制器现在被迫了解表呈现布局,当它的职责是
应该
仅限于传回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列表。
如果控制器传回与AJAX JSON相同的3属性DTO,则数据表会抱怨缺少列。。。数据表期望返回的JSON表示单元格元素,而不是源数据。
目前,我使用jQuery数组转换和自定义表呈现来解决这个问题,这有效地复制了ViewPage的逻辑。
还有别的选择吗?