什么是使用jQuery的数据表的ASP

什么是使用jQuery的数据表的ASP

本文介绍了什么是使用jQuery的数据表的ASP.NET MVC的正确AJAX模式?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个jQuery 。

I have a jQuery DataTable configured for server-side processing against an ASP.NET MVC server.

要实现渐进增强HTML表格呈现,然后升级到一个DataTable。当数据表,使一个AJAX调用来检索更多的数据,它需要返回的JSON的元素与现有的表列布局有关。

To achieve progressive enhancement, an HTML table is rendered, and then upgraded to a DataTable. When the DataTable makes an AJAX call to retrieve more data, it expects elements of the returned JSON to correlate with the existing table-column layout.

此的看起来的导致一些建筑摩擦,这是因为:

This seems to cause some architectural friction, because:

在初始页面渲染:


  • 控制器转换数据库中的数据到的DTO,并建立ViewData的典范。

  • 的的ViewPage变换的ViewData模型转换成HTML用的HtmlHelper等的帮助

Duriung AJAX的更新:

Duriung AJAX updates:


  • 控制器转换数据库中的数据到表单元数据,超链接等。

  • 的DataTable中直接呈现返回的数据插入表单元格。

这里的要点是,控制器现在被迫寂寂表呈现布局,当它的责任的的仅限于传回DTO的。

The point here is that the Controller is now forced into knowing about the table rendering layout, when it's responsibility should be limited to passing back DTOs.

这里有什么了的正确的格局?我如何支持AJAX调用和坚持单一责任主体控制器?

What's the correct pattern here? How do I support AJAX calls and adhere to the single-responsibility principal in the controller?

一些清晰:

我的DTO有三个属性:

My DTO has three properties:

public class AccountListing
{
    public int Id { get; set; }
    public string AccountCode { get; set; }
    public string AccountName { get; set; }
}

渲染的数据表有四列:

The rendered DataTable has four columns:

+--------------+--------------+------+------+
| Account Code | Account Name | View | Edit |
+--------------+--------------+------+------+
| 12345        | FooBar Inc.  | Link | Link |
+--------------+--------------+------+------+

本的ViewPage呈现3财产DTO成4列的表。
如果控制器传回相同的3财产DTO为AJAX JSON,数据表中抱怨缺少的列...数据表预计,返回的JSON重新present细胞元素,而不是源数据。

The ViewPage renders the 3 property DTO into a 4 column table.If the Controller passes back the same 3 property DTO as AJAX JSON, the data table complains about missing columns... the data table expects the returned JSON to represent cell elements, as opposed to source data.

目前我解决这个使用jQuery数组转换和自定义的表格呈现,从而有效地复制了的ViewPage的逻辑。

Currently I'm solving this using jQuery array transforms and custom table rendering, which effectively duplicates the logic of the ViewPage.

有没有什么别的选择吗?

Is there any alternative?

推荐答案

您当前的解决方案(做在客户端渲染)的声音对我好。

Your current solution (doing the rendering on the client side) sound good to me.

问题是,你的DTO没有符合您的视图页面显示的内容。流行的模式是有针对这些情况视图模型对象。

The thing is, your DTOs do not have to correspond to what your view pages display. The popular pattern is having ViewModel objects for these situations.

例如:

public class AccountListingViewModel {
    public string AccountCode { get; set; }
    public string AccountName { get; set; }
    public string ViewLink { get; set; }
    public string EditLink { get; set; }
    public static AccountListingViewModel FromAccountListing(AccountListing o) {
        AccountListingViewModel returnObj = new AccountListingViewModel();
        //populate the properties from the parameter
        return returnObj;
    }
}

请参阅,[model-view-viewmodel].

这篇关于什么是使用jQuery的数据表的ASP.NET MVC的正确AJAX模式?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-22 22:41