2012-12-20 22 views
1

當我嘗試訪問發佈的模型時,我得到一個NullReference。我究竟做錯了什麼?我嘗試過所有我能想到的,但我必須錯過簡單的東西? 這裏是我的相關代碼:ASP.Net MVC模型綁定我在做什麼錯?

控制器

public ActionResult EditQuestion(int id) 
    { 
     IFeedbackRepository rep = DAL.RepositoryFactory.GetFeedbackRepository(); 
     var q = rep.GetQuestion(id); 
     SurveyQuestionEditModel question = new SurveyQuestionEditModel() 
     { 
      Id=q.Id, 
      IsFreeText=q.FreeTextResponse, 
      SurveyId=q.SurveyId, 
      Question=q.Question, 
      Category=q.Category 
     }; 
     return View(question); 
    } 

    [HttpPost] 
    public ActionResult EditQuestion(SurveyQuestionEditModel question) 
    { 
     IFeedbackRepository rep = DAL.RepositoryFactory.GetFeedbackRepository(); 
     rep.UpdateSurveyQuestion(question.Id, question.Question, question.IsFreeText, question.Category); 
     return RedirectToAction("Edit", new { id = question.SurveyId }); 
    } 

ASPX的相關部分:

<fieldset>    
      <%: Html.HiddenFor(model => model.Id) %> 
      <%: Html.HiddenFor(model => model.SurveyId) %> 

     <div class="editor-label"> 
      <%: Html.LabelFor(model => model.Question) %> 
     </div> 
     <div class="editor-field"> 
      <%: Html.TextBoxFor(model => model.Question) %> 

它創建:

<form action="/feedback/Survey/EditQuestion" method="post"> 

    <fieldset> 
     <legend></legend> 

      <input id="Id" name="Id" type="hidden" value="72" /> 
      <input id="SurveyId" name="SurveyId" type="hidden" value="4" /> 

     <div class="editor-label"> 
      <label for="Question">Question</label> 
     </div> 
     <div class="editor-field"> 
      <input id="Question" name="Question" type="text" value="Test" /> 

     </div> 

     <div class="editor-label"> 
      <label for="Category">Question Category</label> 
     </div> 
     <div class="editor-field"> 
      <input id="Category" name="Category" type="text" value="Test" /> 

     </div> 

     <div class="editor-label"> 
      <label for="IsFreeText">Does this question require a free text response?</label> 
     </div> 
     <div class="editor-field"> 
      <input checked="checked" id="IsFreeText" name="IsFreeText" type="checkbox" value="true" /><input name="IsFreeText" type="hidden" value="false" /> 

     </div> 

     <p> 
      <input type="submit" value="Save" /> 
     </p> 
    </fieldset> 

</form> 

下面是模型類:

public class SurveyQuestionEditModel 
    { 


     public int Id { get; set; } 

     [DisplayName("Question")] 
     [Required] 
     [MinLength(4)] 
     public string Question { get; set; } 

     [DisplayName("Does this question require a free text response?")] 
     public bool IsFreeText { get; set; } 

     public int SurveyId { get; set; } 

     [DisplayName("Question Category")] 
     [Required] 
     public string Category { get; set; } 
    } 
+0

我可能是錯的,但我我很確定你的'Id'字段應該是例如「* ModelType.PropertyName *」,而不僅僅是「* PropertyName *」,除非這只是在一個模型中渲染多個類型時。 – James

+0

爲什麼編輯器不輸出這些? – jle

+0

不知道,我注意到你使用'<%:'語法我把它運行你的MVC 2? – James

回答