MVC 2 проблема с заполнением текстового поля после записи - PullRequest
1 голос
/ 10 августа 2011

У меня есть действие в приложении MVC2 со следующим:

    public ActionResult Index()
    {
        return View(new TestModel() { MyValue = "ValueBeforePost" });
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Index(TestModel m)
    {
        m.MyValue = "ValueSetInPost";
        return View(m);
    }

На мой взгляд, у меня есть

<% using (MvcForm f = Html.BeginForm("Index", "Home")) %>
<% { %>
    <%= Html.TextBoxFor(m => Model.MyValue) %>
    <input type="submit" value="Submit" />
<% } %>

После публикации значение в моем текстовом поле не заполняется новым значением, которое я установил в своем действии (m.MyValue = "ValueSetInPost"), оно, по-видимому, заполняется из того значения, которое содержится в запросе. Форма (в данном случае Request.Form ["MyValue", которая является "ValueBeforePost"].

Как мне изменить значение в посте?

Ответы [ 2 ]

1 голос
/ 10 августа 2011

Вам нужно удалить значение из ModelState, которое вы собираетесь изменить, или Html-помощники будут использовать исходное значение POST:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(TestModel m)
{
    ModelState.Remove("MyValue");
    m.MyValue = "ValueSetInPost";
    return View(m);
}
1 голос
/ 10 августа 2011

Вам нужно манипулировать ModelState, чтобы это работало. Есть связанный вопрос , в котором есть больше деталей.

Помощники текстового поля будут использовать AttemptedValue из состояния модели для повторного заполнения текстового поля значениями, отправленными в контроллер. Чистый эффект состоит в том, что данные в ModelState будут переопределять все, что вы помещаете в модель, которая передается в представление в вашем действии публикации.

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