2010-06-16 80 views
1

我是和MVC1程序員,新的MVC2。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); 
     } 
    } 

型號:

[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 2010-06-16 20:12:12

回答

0

Got it!這裏的解決方案:

[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是問題。