Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC-视图更改在模型中排序的数据的显示_C#_Asp.net Mvc_Asp.net Mvc 4_Sorting_Razor - Fatal编程技术网

C# MVC-视图更改在模型中排序的数据的显示

C# MVC-视图更改在模型中排序的数据的显示,c#,asp.net-mvc,asp.net-mvc-4,sorting,razor,C#,Asp.net Mvc,Asp.net Mvc 4,Sorting,Razor,我正在开发一个MVC应用程序,它在网格中显示排序后的数据。它非常简单,模型获取数据,视图显示输出。但是,视图可以对输出进行格式化,使底层数据看起来未排序 例如,模型运行此查询,其输出正确排序: Select ClassName, IsActiveClassAssignment from classtable order by ClassName 但是,视图可以根据viewmodel中其他字段的值更改类名的显示。例如:下面是视图cshtml的一个片段 <span data-bind="if

我正在开发一个MVC应用程序,它在网格中显示排序后的数据。它非常简单,模型获取数据,视图显示输出。但是,视图可以对输出进行格式化,使底层数据看起来未排序

例如,模型运行此查询,其输出正确排序:

Select ClassName, IsActiveClassAssignment from classtable order by ClassName
但是,视图可以根据viewmodel中其他字段的值更改类名的显示。例如:下面是视图cshtml的一个片段

<span data-bind="if:ClassName==null">&nbsp;</span><span data-bind="text: ClassName, visible:IsActiveClassAssignment" />
但这似乎不对。应用程序中到处都有这样的cshtml代码片段,将这种类型的“显示”逻辑推到模型中似乎是不对的。。。还是这样


如何在MVC应用程序中最好地解决这个问题?

您是使用js在本地对当前模型进行排序,还是再次调用控制器以得到不同的模型?类名可以有重复的值,比如cl-val,因此即使文本为空,也可以从cl-val属性中获取,因此不需要时不时地执行case操作。应用程序通过对控制器的ajax调用重新加载模型,控制器根据用户指定的排序标准返回新的排序模型。虽然你的建议有效,虽然这个示例很简单,但实际的显示操作非常复杂,我选择在上面的示例中不显示实际的复杂性,正如我前面提到的,将这种类型的逻辑下推到模式/数据访问层是不对的。。。。还是MVC规定它应该这样做?
 select, CASE WHEN IsActiveClassAssignment = 1 THEN '' ELSE ClassName END as ClassName,IsActiveClassAssignment order by ClassName