2014-02-13 3 views
1

У меня есть поле ввода в моем HTML начать образуютФорма для сбора проблема с динамически добавленным полей ввода

@using (Html.BeginForm("Search", "Reports",FormMethod.Post, new { enctype = "multipart/form-data")) 
{ 
    <input type="text" class="form-control input-sm" placeholder="Value" name="searchvalue"> 

    <button type="button" class="btn btn-default btn-Add">+</button> 
    <input type="submit" value="Search" class="btn btn-primary" /> 
    } 

при нажатии на кнопку добавления моя форма стала:

@using (Html.BeginForm("Search", "Reports",FormMethod.Post, new { enctype = "multipart/form-data")) 
{ 
    <input type="text" class="form-control input-sm" placeholder="Value" name="searchvalue"> 
    <input type="text" class="form-control input-sm" placeholder="Value" name="searchvalue"> 
    <button type="button" class="btn btn-default btn-Add">+</button> 
    <input type="submit" value="Search" class="btn btn-primary" /> 
    } 

как я могу собрать это значение формы в моем контроллере или есть какой-либо метод jquery для отправки этого сообщения на мой контроллер? Пожалуйста, помогите мне.

+0

Сколько раз вы задаете этот вопрос ... 1 час назад вы спрашивали то же самое http://stackoverflow.com/questions/21746218/form-collection-issue – Nilesh

+0

Я не могу найти ответ еще ... – neel

ответ

0

Если вы добавляете дополнительные поля, отсутствующие в вашей модели, вы можете использовать FormCollection в качестве типа модели или посмотреть в HttpContext.Request.Form для своих значений.

Как вы добавляете имя searchvalue дважды, вы, вероятно, увидеть его в FormCollection как [0] .searchvalue и [1] .searchvalue

вам нужно будет перебирать их, чтобы получить значения из их.

Si

1

Я думаю, вы должны использовать FormCollection, чтобы получить значения TextBox. как показано ниже:

public ActionResult Search(FormCollection collection) 
    { 
    //string searchvalue = collection.Get("SearchValue"); 
    var results = ((String[])formcollection.GetValue("SearchValue").RawValue).ToList(); 
    return View(); 
    } 
+0

Зачем использовать форму? когда MVC предоставляет нам функцию привязки модели –

3

Когда вы добавляете элемент динамически, убедитесь, что вы также присвоили ему имя. поэтому, когда вы добавляете новый входной элемент не должен быть

<input type="text" name="NewTextBox" class="form-control input-sm" placeholder="Value" name="searchvalue"> 

Так как это не важно, сколько текста коробки вы добавить, все будут иметь такое же имя. После отправки формы. В контроллере сделайте это.

[HTTPPOST] 
public ActionResult Search(MyModel newModel,string[] NewTextBox) 
{ 
// here as you had dynamic textbox with name = NewTextBox you 
//will get all its value binded to the above string[] 

} 

ИЛИ

Вы можете использовать их retrive Request.form["NewTextBox"] в

[HTTPPOST] 
    public ActionResult Search(MyModel newModel) 
    { 
    var values = Request.Form[NewTextBox]; 

    } 

Но я бы рекомендовал вам первый подход, при котором вы используете MVC Model Binder заботиться о всех вещах. У вас будет только массив значений для игры.

ПРИМЕЧАНИЕ: Всегда удостоверьтесь, что вы правильно указали имена и используете имя справа во время игры с MVC. Поскольку вся привязка зависит от самого именования.

+1

Спасибо! Это было именно то, что мне нужно. – spadelives

Смежные вопросы