2013-07-29 78 views
1

我想讓模型聯編程序識別更改。我不知道我在這裏失去了什麼。基本上,初始頁面填充從數據庫中提取頁碼。然後我有可排序的工作,Firebug中的原始HTML顯示順序的變化。但是,當我首先發回模型時,並不是想要採用post方法,而是另一個問題是Survey。頁面似乎沒有順序上的變化。jQuery的可排序索引更改爲ASP.NET MVC控制器

查看

@for (var i = 0; i < Model.Pages.Count; i++) 
        { 
         var page = Model.Pages.ElementAt(i); 

         @Html.Hidden("Pages[" + i + "].PageId", page.PageId, new { @class = "page_index" }) 
         @Html.Hidden("Pages[" + i + "].PageNumber", page.PageNumber) 

         <li id="@page.PageId" class="sortable-item text-center ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"> 
         </span>@page.PageNumber</li> 
        } 

       </ul> 

的JavaScript

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('.sortable').sortable({ 
      stop: function (event, ui) { 
       var formData = $('#editSurveryForm').serialize(); 
       $.ajax({ 
        url: "@Url.Action("Edit")", 
        data: formData, 
        type: 'POST', 
        traditional: true, 
        success: function() { 
         alert("success"); 
        }, 
        error: function() { 
         alert("fail"); 
        } 
       } 
       ); 
      } 
     }); 
    }); 
</script> 

控制器

[HttpPost] 
    public ActionResult Edit(Survey survey) 
    { 
     if (!ModelState.IsValid) 
     { 
      return View("EditSurvey", survey); 
     } 

     surveyRepository.UpdateSurvey(survey); 

     return RedirectToAction("Index", "Administration"); 
    } 

回答

1

好吧,我想這一個。我有<li></li>標籤以外的隱藏字段。一旦我將它們移動到內部,我就會盡我所能完成所有的邏輯。

<div class="span9"> 
     <div class="span4"> 
      <ul class="sortable_page_list"> 
       @for (var i = 0; i < Model.Pages.Count; i++) 
       { 
        <li class="sortable-item text-center ui-state-default"> 
         @Html.HiddenFor(model => model.Pages[i].PageId) 
         @Html.HiddenFor(model => model.Pages[i].PageNumber) 
         <span class="ui-icon ui-icon-arrowthick-2-n-s"></span>@Model.Pages[i].PageNumber 
        </li> 
       } 

      </ul> 
      <div class="span1 pull-right internal-wrapper"> 
       @Html.ActionLink("Add", "AddPage", new { id = Model.SurveyId }, new { @class = "add_survey_icon common_icon_settings" }) 
      </div> 
     </div> 
    </div> 

<script type="text/javascript"> 
$(document).ready(function() { 
    $('.sortable_page_list').sortable({ 

     update: function (event, ui) { 
      var counter = 1; 
      $("[id*='PageNumber']").each(function() { 
       $(this).attr("value", counter); 
       counter++; 
      }); 

      //var surveyToUpdate = $('#editSurveyForm'); 
      $.ajax({ 
       url: '@Url.Action("Edit","Administration")', 
       contentType: "application/json; charset=utf-8", 
       data: $('#editSurveyForm').serialize(), 
       type: 'POST' 
      }); 
     } 
    }); 

}); 

最後一件事搞清楚的是爲什麼AJAX後不張貼到Post方法與調查表數據