Получение значений из HTML в контроллер - PullRequest
2 голосов
/ 05 января 2011

Я пытаюсь получить доступ к значениям, которые пользователь вводит в таблицу из моего контроллера.

Эта таблица НЕ является частью модели, и исходный код представления выглядит примерно так:

<table id="tableSeriales" summary="Seriales" class="servicesT" cellspacing="0" style="width: 100%">
    <tr>
        <td class="servHd">Seriales</td>
    </tr>
    <tr id="t0">
        <td class="servBodL">
            <input id="0" type="text" value="1234" onkeypress = "return handleKeyPress(event, this.id);"/>
            <input id="1" type="text" value="578" onkeypress = "return handleKeyPress(event, this.id);"/>
            .
            .
            .
        </td>
    </tr>
</table>

Как я могу получить эти значения (1234, 578) от контроллера?

Получение коллекции форм не работает, так как не получает таблицу ...

Спасибо.

Ответы [ 2 ]

0 голосов
/ 05 января 2011

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

  1. Таблица находится внутри элемента?
  2. Можете ли вы добавить атрибут name к элементам ввода?Обратите внимание, что элементы формы связаны по именам, а не по идентификатору.

Второй параметр: Второй вариант - добавить коллекцию в вашу модель и присвоить ей все имена.т.е.

public class MyModel
{
  ...
  public IList<string> MyTableItems { get; set; }
}

и, по вашему мнению, используйте следующие имена:

<input name="MyTableItems[]" value="" />
0 голосов
/ 05 января 2011

Использование FormCollection должно работать, если ваша таблица не находится внутри тега <form>


Помимо комментария Лазаря, вы можете попробовать это, но вы должны установить атрибут name для каждого:

<input id="seriales[0]" name="seriales[0]" type="text" value="1234" onkeypress="return handleKeyPress(event, this.id);"/>
<input id="seriales[1]" name="seriales[1]" type="text" value="578" onkeypress="return handleKeyPress(event, this.id);"/>

Теперь в вашем методе Action вы можете сделать так, чтобы ваш метод выглядел следующим образом:

[HttpPost]
public ActionResult MyMethod(IList<int> seriales)
{
    // seriales.Count() == 2
    // seriales[0] == 1234
    // seriales[1] == 578
    return View();
}

и seriales будут подключены к этим значениям.

...