2013-12-21 3 views
0

ASP.NET MVC4 응용 프로그램을 작성 중입니다. Generated table편집 된 목록의 항목 만 업데이트하는 방법

그래서 궁금 :

이 생산 무엇
<tbody> 
    @for (int i = 0; i < Model.Page.Documents.Count; i++) 
    { 
     <tr> 
      <td>@Html.TextBoxFor(m => Model.Page.Documents[i].Name)</td> 
      <td>@Html.DisplayFor(m => Model.Page.Documents[i].FileName)</td> 
      <td><a href="@Url.Action("Delete", new { docId = Model.Page.Documents[i].DocumentID, PageID = Model.Page.PageID })"><img src="/Content/Images/delete.png", alt="Delete" /></a></td> 
     </tr> 
    } 
</tbody> 

이 같은 것입니다 : 나는 그런 내 시야를 렌더링

public class Page 
{ 
    public Page() 
    { 
     Date = DateTime.Now; 
    } 
    public int PageID { get; set; } 
    public string Title { get; set; } 
    public DateTime Date { get; set; } 
    public virtual List<Document> Documents { get; set; } 
} 

: I 형 Page의보기 Page을 강력하게 입력 한 Name 속성의 변경 내용을 정확히 적용하는 방법 내가 생각할 수있는 것은 전체 테이블을 @Html.BeginForm()으로 렌더링 한 다음 제출 된 문서를 반복하여 편집했는지 여부에 관계없이 업데이트하는 것입니다. 나는 큰 목록을 가지고 일하지 않을 것이다. 그래서 이것은 선택 사항이지만 나는 그것보다 나은 것을 생각하려고 노력하고있다. P.S Entity Framework 5에 코드 우선을 사용하고 있습니다.

답변

1

"IsEdited"부울 속성을 ViewModel에 추가합니다. 기본값은 false입니다. "이름"텍스트 상자가있는 곳에 숨겨진 필드를 렌더링하십시오.

<td>@Html.TextBoxFor(m => Model.Page.Documents[i].Name)@Html.HiddenFor(m=>Model.Page.Documents[i].IsEdited)</td> 

"이름"텍스트 상자의 "onchange"이제 해당 숨김 필드의 값을 "true"로 설정하십시오. 이제 게시물을 보려면 "IsEdited = false"인 모델을 필터링하십시오.

var editedDocuments=models.Where(x=>x.IsEdited) 
관련 문제