Значение MVC2 TextBoxFor, не обновляющее после, отправляет?

Это - действительно странное поведение, и я установил некоторый демонстрационный кодекс, чтобы попытаться выяснить то, что продолжается.

В основном имейте два действия и единственное представление. Первое действие отправляет пустую модель в представление, действие раздела получает модель, изменяет ее содержание и передает ее обратно тому же представлению.

Странность в представлении, Модель, кажется, имеет обновленные значения в нем, но когда я делаю HTML. TextBoxFor (x => x. PropertyNameHere), это представляет текстовое поле с неизменным значением в нем.

lol... Я приношу извинения заранее за сортирный юмор, но он мешает дню становиться слишком скучным.;)

У кого-либо есть какая-либо идея, что продолжается здесь? Почему вывод TextBoxFor помещает старое значение в атрибут значения?

Вот код для тиражирования:

/Views/Demo/Index.aspx

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>



    Demo


    
<%using (Html.BeginForm("DemoSubmit", "Admin", FormMethod.Post)) { %> Foo: <%=Html.TextBoxFor(x => x.Foo)%> <%:Model.Foo %>
Bar: <%=Html.TextBoxFor(x => x.Bar) %> <%:Model.Bar %>
PoopSmith: <%=Html.TextBoxFor(x => x.PoopSmith) %> <%:Model.PoopSmith %>
<%} %>

DemoModel.cs

namespace TestWeb {
    public class DemoModel {
        public string Foo { get; set; }
        public int Bar { get; set; }
        public string PoopSmith { get; set; }
    }
}

DemoController.cs

public class AdminController : Controller {

        public ActionResult Index() {
            var m = new DemoModel();
            return View(m);
        }

        public ActionResult DemoSubmit(DemoModel demo) {
            demo.Foo += "!!!";
            demo.Bar++;
            demo.PoopSmith += " has pooped.";
            return View("Index", demo);
        }
}

И вот причудливый вывод:

Bizarre

12
задан Glorfindel 27 July 2019 в 23:09
поделиться

1 ответ

Помощники Html по умолчанию пытаются повторно отобразить данные, которые им опубликованы. Сначала они используют значение из опубликованных данных, а если опубликованные данные недоступны, они берут данные из Модели.

Это не то, чего вы хотите, но все же наиболее распространенное использование: Вы отображаете некоторые данные в полях формы после получения запроса get. Вы отправляете сообщение в действие Update. Если у вас возникли ошибки, вы хотите заново отобразить форму с сохранением введенных вами значений.

Я видел, как некоторые люди обходят это (думаю, с помощью записи в ModelState), но мой выбор всегда заключался в том, чтобы не использовать стандартные помощники, если они мне не помогают. Это особенно верно для скрытых полей: Большинство людей путаются, когда они устанавливают значение для скрытого поля, но значение, которое реально используется, берется из сообщения. По крайней мере, на SO об этом спрашивают каждый второй день :-)

Забудьте о "большинстве людей" и замените его на "всех".

ASP.NET MVC: значение скрытого поля не отображается при использовании HtmlHelper.Hidden

http://blog.johnwest.com/post/ASPNET-MVC-Hidden-Form-Field-Bug.aspx

http://blogs.msdn.com/b/simonince/archive/2010/05/05/asp-net-mvc-s-html-helpers-render-the-wrong-value.aspx?utm_medium=Twitter&utm_source=Shared

UPDATE О, я нашел еще одно сегодняшнее (Вы не одиноки):

Как обновить значение текстового поля

14
ответ дан 2 December 2019 в 06:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: