2013-05-22 21 views
7

私はユーザーが質問に答えてテキストエリアを記入し、次に[次へ]を押すWebサイトを作成しています。彼らがnextを押すと、テキストエリアがコントローラに送信され、次の質問が取得されます(私はクッキーに回答を保存します)。残念ながら、デバッグでコードを実行すると、textareaがb/cに送信されていないことがわかりました。パラメータはnullです。私はそれを理解しようとしたし、私は周りを見回して、私はそれを適切にやっているようだ。うまくいけば、それは簡単な修正です。あなたのお時間をありがとうございました!コントローラにテキストエリアを投稿する(現在nullが渡されています) - MVC

コントローラー:

// 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> 
+1

<テキストエリアの行= "20" スタイル= "幅:600PX" ID = "textAnswer" 名前= "textAnswer">と、通常の入力要素を追加すること – Ramunas

+0

てみてくださいそれが投稿されるかどうかを確認してください。 –

答えて

9

あなたのテキストエリアを投稿するためには名前が必要です。

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

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

+0

私のコードを修正しました。何らかの理由でNullを引き継いでいます...フォームの名前も変更しようとしましたが、テキストエリアはまだ渡されていません。迅速な対応に感謝します! – Dehli

+0

'enctype'属性を削除してみてください。ファイルデータを投稿しようとしていない限り、私はその属性を指定したことがないので、これをお勧めします。 –

+0

ありがとう!それが必要なのです。すてきな一日を! – Dehli

1

テキスト領域は文字列をポストしません。文字列配列を配置します。
あなたのコントローラは、この署名を持っている必要があります。

public ActionResult q(string[] textAnswer) 
関連する問題