2011-02-15 87 views
1

我是相當新的MVC和從版本3開始。我有一個與MVC3附帶的jQuery重新排序列表的問題。MVC jQuery重新排序列表沒有在回發排序

的觀點,從我的模型的枚舉呈現:

@using (Html.BeginForm()) 
{ 

    <ul id="questionlist" class="ReorderList"> 
     @for (int i = 0; i < data.Count(); i++) 
     { 
      <li> 
       <span class="dragHandle"></span> 
       @Html.HiddenFor(x => data[i].ID) 
       @Html.HiddenFor(x => data[i].DisplayOrder) 
       @Html.TextBoxFor(x => data[i].QuestionText) 
      </li> 
     } 
    </ul> 

    <input type="submit" value="Save" /> 
} 

頁面加載jQuery是初始化列表中:

<script type="text/javascript"> 
    $(document).ready(function() { 
     var unordered = $("#questionlist").sortable({ 
      axis: 'y', 
      update: listUpdated }); 
    }); 

    function listUpdated(event, ui) { 
     $('input[name$="DisplayOrder"]').each(function (index) { this.value = index; }); 
    } 
</script> 

正如你所看到的順序更新的jQuery後正在更新映射到我的模型上的DisplayOrder屬性的所有隱藏字段。

調試此我可以看到值正確回發到控制器,業務對象更新並正確保存在SQL Server中。在表上運行查詢我可以看到所有內容都按照它應該更新的方式進行更新。

我的問題發生在用戶點擊'保存'按鈕返回的HTML是原始順序,而不是他們改變它的順序。 Fiddler以原始順序顯示HTML返回,但DisplayOrder隱藏字段具有正確(更改)的值。 單擊屏幕上的導航按鈕以刷新視圖以正確的順序呈現列表。我已經通過渲染過程進行了調試,並且所有內容都以正確的順序渲染,我也嘗試用OutputCaching設置爲false來修飾控制器,但當然,由於DisplayOrder屬性使用正確的值。

我在做什麼錯誤,使其顯示不正確的第一個回發,但不是隨後的回發?

+0

MVC不使用回發。 – 2011-02-15 17:49:27

回答