2013-05-22 2 views
7

Я создаю сайт, на котором пользователь заполнит текстовое поле (в ответ на вопрос), а затем нажмите дальше. Когда они нажимают дальше, текстовое поле будет отправлено контроллеру, и следующий вопрос будет восстановлен (я также сохраню ответ в файле cookie). К сожалению, когда я запускаю код в отладке, я понял, что текстовое поле не отправляется b/c, параметр имеет значение null. Я попытался понять это, и я огляделся, и, похоже, я делаю это правильно. Надеюсь, это легко исправить. Большое спасибо за ваше время!Проводка Textarea to Controller (в настоящее время передается 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

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) 
Смежные вопросы