Возможно ли, что состояние модели было обновлено с ошибкой? Я полагаю, что оно будет извлекать запрашиваемое значение из состояния модели, а не из данных представления или модели, если состояние модели недопустимо.
EDIT :
Я включил соответствующий раздел исходного кода из расширения TextArea HtmlHelper ниже. Мне кажется, что он делает именно то, что я ожидал - если произошла ошибка модели, он извлекает значение из состояния модели, в противном случае он использует его из ViewData. Обратите внимание, что в вашем методе Post ключ SomeText даже не должен существовать, пока вы его не установите, т. Е. Он не будет перенесен с версии кода, отвечающей на GET.
Поскольку вы явно указываете значение для ViewData, useViewData
должно быть ложным, attemptedValue
должно быть ложным, если в состоянии модели не установлена ошибка.
// If there are any errors for a named field, we add the css attribute.
ModelState modelState;
if (htmlHelper.ViewData.ModelState.TryGetValue(name, out modelState)) {
if (modelState.Errors.Count > 0) {
tagBuilder.AddCssClass(HtmlHelper.ValidationInputCssClassName);
}
}
// The first newline is always trimmed when a TextArea is rendered, so we add an extra one
// in case the value being rendered is something like "\r\nHello".
// The attempted value receives precedence over the explicitly supplied value parameter.
string attemptedValue = (string)htmlHelper.GetModelStateValue(name, typeof(string));
tagBuilder.SetInnerText(Environment.NewLine + (attemptedValue ?? ((useViewData) ? htmlHelper.EvalString(name) : value)));
return tagBuilder.ToString(TagRenderMode.Normal);