1

投稿されたモデルにアクセスしようとすると、NullReference が返されます。私は何を間違っていますか?考えられることはすべて試しましたが、単純なものが欠けているに違いありませんか? ここに私の関連コードがあります:

コントローラ

    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; }
    }
4

1 に答える 1

3

この質問のように見えます:フォームが送信されたときにモデルがnullです

ここでパラメーター名を置き換えます。

public ActionResult EditQuestion(SurveyQuestionEditModel question)
于 2012-12-20T13:20:30.770 に答える