在没有控制器参与的情况下对MVC视图列表中的项进行排序

时间:2013-11-27 07:00:24

标签: c# javascript asp.net-mvc asp.net-mvc-viewmodel asp.net-mvc-views

根据我的理解,我发现我们也可以从View中编码。所以我有一个使用foreach循环在View中填充的列表。

@foreach (var item in Model)
{
@Html.Raw(item.Name)<br />
@Html.Raw(item.Price)<br />
@Html.Raw(item.Description)<br />
@Html.Raw(item.Image)
<hr />
}

我还在foreach循环外面有一个下拉列表,我想用价格排序。
我可以通过将模型传递给控制器​​来完成此操作,但这里页面完全刷新,这是我的东西不想发生。 Inturn我只想动态地对模型进行排序,比如使用javascript来优化Model中具有列表的项目。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我认为你所尝试的是无法做到的事情。

我认为您要做的是刷新页面以使用Razor语法对列表重新排序,而无需对服务器进行页面刷新或HTTP调用。这是不可能的,因为ASP.NET MVC世界中的View是cshtml定义,每次调用将执行一次。您需要在客户端运行一些东西来刷新页面(即JavaScript)。

一个好主意是将模型的内容输出为Json(您可以在标准MVC控制器(没有关联的视图)中使用MVC控制器JsonResult函数返回Json。您还可以使用WebApi控制器,它可以生成Json。

然后,您需要在客户端使用一些代码来查看该模型并对其进行重新排序以响应您的客户端交互。 Angular.jsBackbone.js是这方面的有力竞争者,但有lots of others

或者你可以use jQuery