2010-06-16 4 views
1

저는 MVC2를 처음 접하는 MVC1 프로그래머입니다.ASP.MVC 2 모델 데이터 지속성

데이터가 편집 시나리오에서 데이터베이스에 유지되지 않습니다. 만들기가 잘됩니다.

컨트롤러 :

// 
    // POST: /Attendee/Edit/5 

    [Authorize(Roles = "Admin")] 
    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Edit(Attendee attendee) 
    { 

     if (ModelState.IsValid) 
     { 
      UpdateModel(attendee, "Attendee"); 
      repository.Save(); 

      return RedirectToAction("Details", attendee); 
     } 
     else 
     { 
      return View(attendee); 
     } 
    } 

모델 : I 추가하려고

[MetadataType(typeof(Attendee_Validation))] 
public partial class Attendee 
{ 
} 

public class Attendee_Validation 
{ 

    [HiddenInput(DisplayValue = false)] 
    public int attendee_id { get; set; } 

    [HiddenInput(DisplayValue = false)] 
    public int attendee_pin { get; set; } 

    [Required(ErrorMessage = "* required")] 
    [StringLength(50, ErrorMessage = "* Must be under 50 characters")] 
    public string attendee_fname { get; set; } 

    [StringLength(50, ErrorMessage = "* Must be under 50 characters")] 
    public string attendee_mname { get; set; } 
} 

는 [바인드 (= "attendee_id"제외)] 클래스 선언 상술하지만, 그 다음 attendee_id 속성의 값이 '0'으로 설정하십시오.

보기 (강력한 형식) : 기본적으로

<% using (Html.BeginForm()) {%> 
    ... 
    <%=Html.Hidden("attendee_id", Model.attendee_id) %> 
    ... 
    <%=Html.SubmitButton("btnSubmit", "Save") %> 
<% } %> 

의 repository.Save(); 함수는 아무 것도하지 않는 것 같습니다. 기본 키 제약 조건 위반과 관련이 있다고 생각합니다. 하지만 SQL Server에서 오류가 발생하지는 않습니다. 응용 프로그램이 제대로 실행되는 것으로 나타나지만 데이터가 데이터베이스에 저장되지 않습니다.

+0

도움이 될만한 정보가 더 필요합니다. 어떤 종류의 디버깅을 시도 했습니까? 디버깅 할 때 무슨 일이 일어나는지 더 잘 설명 할 수 있습니까? 저장 통화도 받으십니까? 저장소에서 뭔가가 발생합니까? 방법을 저장 하시겠습니까? – klabranche

답변

0

알 수 있습니다. 해결책은 다음과 같습니다.

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Edit(int id, FormCollection form) 
{ 
    Attendee attendee = repository.GetAttendee(id); 

    try 
    { 
     UpdateModel(attendee, form); 
     repository.Save(); 

     return RedirectToAction("Details", attendee); 
    } 
    catch 
    { 
     return View(attendee); 
    } 
} 

UpdateModel() ValueProvider가 문제였습니다.