C# 向MVC控制器传递列列表并返回这些列的数据?

C# 向MVC控制器传递列列表并返回这些列的数据?,c#,asp.net-mvc,asp.net-mvc-4,datatables,jquery-datatables,C#,Asp.net Mvc,Asp.net Mvc 4,Datatables,Jquery Datatables,我正试图建立一个助手类,需要一些建议 我想创建一个助手,可以传入一个对象,该对象表示由特定模型键入的DataTables的设置。此对象将包含一组表达式,这些表达式表示辅助对象要使用的列。作为DataTables对象的一部分,将有一个属性,用于保存为网格提供数据的URL。这实际上是sAjaxSource参数。作为URL调用的一部分,将发送一个JSON包,其中包含有关列的信息。这整个部分,我了解如何构建。基本上,我将构建包含列定义的DataTablesJavaScript代码,并创建一个JSON对象

我正试图建立一个助手类,需要一些建议

我想创建一个助手,可以传入一个对象,该对象表示由特定模型键入的
DataTables
的设置。此对象将包含一组表达式,这些表达式表示辅助对象要使用的列。作为
DataTables
对象的一部分,将有一个属性,用于保存为网格提供数据的URL。这实际上是
sAjaxSource
参数。作为URL调用的一部分,将发送一个JSON包,其中包含有关列的信息。这整个部分,我了解如何构建。基本上,我将构建包含列定义的
DataTables
JavaScript代码,并创建一个JSON对象来表示我要在URL中传递的列

我需要一些建议的领域是在调用服务器/控制器后为特定列构建数据。因此,我的控制器可能如下所示:

public ActionResult GetUsersList(IEnumerable<DatatableColumnJson> columns)
    {
        var users = _someUserRepository.GetAll();


        foreach (var user in users)
        {
            //Here I would build the JSON that DataTables needs to render the grid.
            //I would iterate through the users and pull out the data for the specific columns
        }

        return Json(someCompleteDataTablesObject, JsonRequestBehavior.AllowGet);
    }

所以我首先认为我可以使用反射,但这似乎有点密集,也许。另一个想法是将列名转换为表达式,以便可能提取数据。我想要一些高效且不会有太多开销的东西,但也许我要求太多。

通过HTTP以纯文本形式传递表列是一个非常非常糟糕的主意。这是在乞求SQL注入攻击,只有使用具有严格表访问权限的只读数据库用户的应用程序才应考虑在线传递列。我不确定我是否同意这一点,因为这只是用于显示记录,而不是查询记录。此外,可以对列名进行编码并将其传递给控制器。在我的示例中,如果您注意到,在使用列之前会查询存储库。我理解这些问题,但这并不是回答我的问题。您仍然向所有人公开您的底层数据层。即使他们不能在这个实例中使用SQL注入,您也会向任何希望恶意的人暴露太多的信息。在最坏的情况发生之前,没有人认为这些规则适用于他们。。。。
public class DatatableColumnJson
{
    public string Name { get; set; }
    public string Visible { get; set; }
}

public class User
{
    public string UserName { get; set; }
    public string Email { get; set; }
}