У меня есть контроллер MVC с этим методом действия:
[HttpPost]
public ActionResult SubmitAction()
{
// Get Post Params Here
... return something ...
}
Форма представляет собой нетривиальную форму с простым текстовым полем.
Вопрос
Как получить доступ к значениям параметров?
Я отправляю сообщения не из представления, сообщение приходит извне. Я предполагаю, что есть набор пар ключ / значение, к которым у меня есть доступ.
Я пробовал, Request.Params.Get("simpleTextBox");
но возвращается ошибка «Извините, при обработке вашего запроса произошла ошибка».
asp.net
asp.net-mvc-3
http-post
Ричард
источник
источник
Просто вы можете использовать
FormCollection
как:Вы также можете использовать класс, который отображается со значениями формы, и механизм asp.net mvc автоматически заполняет его:
источник
Ответы очень хорошие, но в последней версии MVC и .NET есть еще один способ, который мне очень нравится использовать вместо ключей FormCollection и Request "старой школы".
Рассмотрим фрагмент HTML, содержащийся в теге формы, который выполняет либо AJAX, либо FORM POST.
Ваш контроллер фактически проанализирует данные формы и попытается доставить их вам как параметры определенного типа. Я включил флажок, потому что он сложный. Он возвращает текст «on», если отмечен, и null, если не отмечен. Однако требование состоит в том, что эти определенные переменные ДОЛЖНЫ существовать (если не допускают значения NULL (помните, что
string
это допускает значение NULL)), в противном случае возврат AJAX или POST не удастся.Вы также можете отправить модель обратно, не прибегая к помощи бритвы. Я заметил, что это нужно несколько раз.
Разметка HTML будет просто ...
и ваш контроллер (Razor Engine) перехватит переменную формы «variableName» (имя как вам нравится, но сохраняйте его согласованность) и попытается создать ее и преобразовать в MyModel.
Когда контроллер ожидает Модель (в данном случае HomeModel), вам не нужно определять ВСЕ поля, поскольку синтаксический анализатор просто оставит их по умолчанию, обычно NULL. Приятно то, что вы можете смешивать и сопоставлять различные модели в разметке, и синтаксический анализ обратной связи заполнит как можно больше. Вам не нужно определять модель на странице или использовать какие-либо помощники.
Использование
List<>
разметки немного сложнее.Индекс в списке <> ДОЛЖЕН всегда иметь отсчет от нуля и быть последовательным. 0,1,2,3.
Использование
IEnumerable<>
для ненулевых и непоследовательных индексов. Нам нужно добавить дополнительный скрытый ввод, чтобы помочь подшивке.И код просто должен использовать IEnumerable и вызывать
ToList()
Рекомендуется использовать одну модель или ViewModel (модель, содержащую другие модели для создания сложной модели View) для каждой страницы. Предлагаемое смешивание и сопоставление может считаться плохой практикой, но пока оно работает и читается, это НЕ ПЛОХО. Однако он демонстрирует мощность и гибкость движка Razor.
Поэтому, если вам нужно добавить что-то произвольное или переопределить другое значение из помощника Razor, или вы просто не хотите создавать свои собственные помощники, для одной формы, которая использует некоторую необычную комбинацию данных, вы можете быстро использовать эти методы, чтобы принять дополнительные данные.
источник
Если вы хотите получить данные формы непосредственно из запроса Http, без каких-либо привязок модели, или
FormCollection
вы можете использовать это:источник
Request
и внедрить его в метод.