2013-02-14 61 views
1

我有这样的jQuery的功能重新排列列表基于日期时间,当用户点击这类链接修改清单,日期订里面查看

$('#sort-date-added').click(function() { 
      '@Model.HomeProducts' = '@Model.HomeProducts.OrderBy(x => x.LastModifiedDate)'; 
      alert('xx'); 
     $.each('@Model.HomeProducts', function (index) { 
      alert('@Model.HomeProducts.ElementAt(index).Name'); 
      //x++; 
     }); 
    }); 

这是哪门子的链接

<p><a id="sort-date-added" href="#">Sort by Date Added</a></p> 

,但它不没有工作,有谁知道为什么,任何人都可以帮助解决方案或更好的解决方案?

+0

$ .each('@ Model.HomeProducts',function(key,index){}? – CR41G14 2013-02-14 12:25:20

+0

关键代表什么? – 2013-02-14 12:26:21

+0

@BrianMains我按照字母顺序排列列表,并在运行时按住用户单击按日期排序我将更改按时间排序的排序,该行将按日期排序 – 2013-02-14 13:27:42

回答

0

如果我是你,我会做到以下几点:

主视图:

<p><a id="sort-date-added" href="#">Sort by Date Added</a></p> 
<div id="list"> 
    @Html.Partial("_ProductsList", Model) 
</div> 

管窥 “_ProductsList”:

<ul> 
@foreach(var item in Model.HomeProducts) 
{ 
    <li>@item.Name</li> 
} 
</ul> 

JS:

$(document).ready(function(){ 

    var ajaxOrderByDate = $.post(
          'Home/GetOrderedProducts/', { 
           orderType: 1 
          }); 

    $('#sort-date-added').on('click', function() { 
      ajaxOrderByDate.done(function(data){ 
          $('#list').html(data); 
         }) 
         .fail(function(){ 
          console.log("error"); 
         }); 
    } 

}); 

ASP.NET在HomeController或whateve中r:

[HttpPost] 
public ActionResult GetOrderedProducts(int orderType) 
{ 
    switch(orderType) 
    { 
      case 1: 
      //order by date 
    } 

    return PartialView("_ProductsList", Model); 
} 

您可以为您订购的字段设置枚举。

基本上这个想法是创建一个包含列表的部分视图,并在服务器上排列这个列表的元素。通过ajax重新渲染列表来更新视图。 我认为这是最好的方法。