MVC3 Поиск элемента управления по имени - PullRequest
0 голосов
/ 22 ноября 2011

У меня есть веб-приложение на C # .Net, и я пытаюсь получить доступ к одному из текстовых полей HTML / ASP в контроллере для представления редактирования моей модели предложения.В приложении не из MVC я смог сделать это, используя Control.ControlCollection.Find().Есть ли эквивалент для проекта MVC3?

Ответы [ 4 ]

2 голосов
/ 22 ноября 2011

Вы запрашиваете эквивалент Control.ControlCollection.Find() в MVC?

В MVC ваш контроллер не знает о элементах управления .

Контроллер просто получает данные через параметрыи возвращает данные через результат функции.

Что вы хотите сделать с элементом управления в коде вашего контроллера?

Если вы хотите получить доступ к значению, вам следует привязать его к параметру:

Вид:

<input name="MyControl" type="text" />

Контроллер:

public ActionResult MyAction(string MyControl) {
    // MyControl contains the value of the input with name MyControl
}
1 голос
/ 22 ноября 2011

Шаблон MVC был разработан для разделения вещей.

  • Представление вообще не знает контроллера
  • Контроллер знает только, что представление существует и какие данные ему нужны. Он не знает как данные отображаются.

Следовательно, вы никогда не сможете получить информацию об элементах управления / тегах в представлении от контроллера. Вам необходимо использовать javascript / jQuery в представлении и вызвать соответствующее действие в контроллере.

0 голосов
/ 22 августа 2012

Ну, наверное, я опаздываю на это, но это должно помочь другим в будущем ... вы можете сохранить значение ur в скрытом поле в поле зрения, а затем получить доступ к этому значению в контроллере с помощью следующего кода ..

Request.Form["hfAnswerOrder"].ToString();

Point - hfAnswerOrder - это идентификатор скрытого поля.

Мой элемент управления на странице cshtml ..

@Html.Hidden("hfAnswerOrder", Model.Answers.ToList()[0].AnswerOrder)
0 голосов
/ 22 ноября 2011

В MVC-приложении у вас нет элементов управления, как в веб-приложении.
В MVC вы собираете необходимые данные в контроллере и передаете их в представление. Обычно представление представляет собой HTML-страницу со встроенным кодом.
В отличие от элементов управления в веб-формах, которые генерируют HTML и обрабатывают постбэки в MVC, вы должны делать все это вручную. Таким образом, у вас нет элементов управления со свойствами и событиями, к которым вы можете легко получить доступ в контроллере, и вы должны обрабатывать все свои сообщения с помощью собственного кода.
Это звучит так, как много работы - и действительно, это может быть, если вы реализуете поведение сложных элементов управления - но приложения MVC гораздо лучше поддерживать, и вы имеете 100% влияние на созданный HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...