9

私は、ユーザーが (質問に答えて) テキストエリアに入力し、[次へ] を押す Web サイトを作成しています。次を押すと、テキストエリアがコントローラーに送信され、次の質問が取得されます (回答は Cookie にも保存されます)。残念ながら、デバッグでコードを実行すると、パラメーターが null であるためにテキストエリアが送信されていないことに気付きました。私はそれを理解しようとしました、そして私は周りを見回しました、そして私はそれを適切にやっているようです. うまくいけば、それは簡単な修正です。お時間をありがとうございました!

コントローラ:

// POST: /Question/1 
[HttpPost]
public ActionResult q(string textAnswer) {
    if (textAnswer != null)
        ViewBag.current++;

    Question q = db.Questions.Find(ViewBag.current);
    if (q == null) {
        return RedirectToAction("submit");
    }

    return View(q);
}

意見:

<form class="form-horizontal" id="myForm" method="post" enctype="text/plain" name="input">

    <p>
        <h3>Question <span id="integer">@ViewBag.current</span></h3>
        @Html.DisplayFor(model => model.Ques)
    </p>

    <div class="control-group">
        <label class="control-label">Answer</label>
        <div class="controls">
            <textarea rows="20" style="width:600px" id="textAnswer"></textarea>
        </div>
    </div>

    <div class="control-group">
        <div class="controls" >
            <button onclick="history.back()" type="button" class="btn">Back</button>
            <input type="submit" class="btn" value="Next" />
        </div>
    </div>

</form>
4

2 に答える 2

17

投稿するには、テキストエリアに名前が必要です。

<textarea rows="20" style="width:600px" id="textAnswer" name="textAnswer"></textarea>

また、フォームから enctype 属性を削除します。

于 2013-05-22T20:33:32.703 に答える
2

テキスト領域は文字列を投稿せず、文字列配列を投稿します。
コントローラーには次の署名が必要です。

public ActionResult q(string[] textAnswer)
于 2016-09-15T03:47:02.047 に答える