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; }
}
我可能是錯的,但我我很確定你的'Id'字段應該是例如「* ModelType.PropertyName *」,而不僅僅是「* PropertyName *」,除非這只是在一個模型中渲染多個類型時。 – James
爲什麼編輯器不輸出這些? – jle
不知道,我注意到你使用'<%:'語法我把它運行你的MVC 2? – James