Jquery 在Razor视图中将ASP.NET MVC 3视图模型呈现为ListView、Corcordian或简单列表

Jquery 在Razor视图中将ASP.NET MVC 3视图模型呈现为ListView、Corcordian或简单列表,jquery,asp.net-mvc-3,razor,Jquery,Asp.net Mvc 3,Razor,我正在尝试使用MVC3、Razor视图引擎和jQueryUI为自己构建一个示例 从控制器返回一个ViewModel(它有一个列表),并且能够将JQuery手风琴环绕在html段周围。一切正常 现在,我正在努力让它变得更好。 1) 希望有一个分页栏,它可以根据所选页面和每页所选项目的数量刷新手风琴(我知道需要在controller中做什么等。与c相比,我的javascript技能不太好:-() 2) 我希望能够为数据选择“显示类型”。例如,如果你看到Slickdeals网站,我们可以选择网格、手风

我正在尝试使用MVC3、Razor视图引擎和jQueryUI为自己构建一个示例

从控制器返回一个ViewModel(它有一个列表),并且能够将JQuery手风琴环绕在html段周围。一切正常

现在,我正在努力让它变得更好。 1) 希望有一个分页栏,它可以根据所选页面和每页所选项目的数量刷新手风琴(我知道需要在controller中做什么等。与c相比,我的javascript技能不太好:-()

2) 我希望能够为数据选择“显示类型”。例如,如果你看到Slickdeals网站,我们可以选择网格、手风琴或简单列表。它似乎只是在数据上应用一个模板并刷新html

我想知道怎样才能最好地做到这一点。(我想到的一个想法是,向控制器发送一个具有所需显示类型的AJAX请求,控制器可以呈现视图并返回字符串作为响应,然后作为html应用于元素。是否有更好的方法,我的意思是数据已经在浏览器中,所以我们可以只应用一些模板,然后重新呈现相同的数据助教?)

对于(1)和(2),我希望避免使用整版的回发

(我将尝试添加更多细节)

提前感谢

Re(2):我认为在控制器内部生成HTML是个坏主意——关注点分离表明视图应该对HTML全权负责

但是,您的视图模型中可以有一个属性,告诉视图要生成哪个版本:例如

public class XyzModel
{
    public string displayType { get; set; }
    // ... other properties
}
然后在视图中,可以测试此变量:

@if (Model.displayType == "grid")
{
   // html for grid
}
else if (Model.displayType == "accordian")
{
   // html for accordian
}
等等,使用相同数据的所有html块

如果您想使用Ajax来填充此代码,可以在局部视图中隔离此代码,并使用jQuery进行填充,如:

$.post(
    form.attr("action"),
    form.serialize(),
    function (data) {
          $("#dataDisplay").html(data);
    });
其中dataDisplay部分可能类似于:

<div id="dataDisplay">
@Html.Partial("DataDisplayPartial", Model)
</div>

@Html.Partial(“DataDisplayPartial”,模型)
DataDisplayPartial视图将包含上述代码。。。差不多吧