ASP.NET MVC - манипулирование HTTP-постом - PullRequest
3 голосов
/ 04 февраля 2009

Когда форма отправляется обратно на сервер, можно ли манипулировать, изменять, устанавливать значения, содержащиеся в HTTP Post, в действии контроллера? Я хотел бы удалить некоторые значения текстового поля, введенные пользователем, чтобы эти значения всегда приходилось вводить повторно (например, поля пароля). По умолчанию помощники HTML извлекают начальные значения для элементов управления HTML из информации HTTP Post.

Ответы [ 2 ]

7 голосов
/ 04 февраля 2009

Вам не нужен пользовательский ModelBinder.

    [Bind(Exclude="Foo,Bar")]
    public ActionResult Insert(T model)

Теперь Foo и Bar равны нулю.

Это делает то, что вы просите, но я не совсем уверен, что вы имели в виду. :)

Я предполагаю, что ваше действие должно видеть пароль (или любой другой), введенный пользователем. Но если, например, необходимо ввести другое поле, вы не хотите заполнять пароль при повторном отображении формы. Это хорошая идея. Но в этом случае связующие модели даже не вводятся. Вы просто устанавливаете поле в null, прежде чем повторно отображать представление.

    public ActionResult Insert(T model)
    {
        try
        {
            Repository.Add(model);
        }
        catch (Exception ex)
        {
            ViewData["Message"] = ex.Message;
            model.Password = null;
            return View(model);
        }
        // success!
        return RedirectToRoute( //...
   }
0 голосов
/ 04 февраля 2009

Вы можете создать собственный ModelBinder, который позволит вам манипулировать опубликованными данными.

Пост Скотту , посвященный этой теме.

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