В основном это комментарий к комментарию в этом выпуске, но у меня недостаточно репутации для комментариев...
ASP.Net MVC Возвращает значение метки для вашего контроллера
Скажем, у меня есть простая модель:
public class SimpleClass
{
public String Label { get; set; }
public String FirstName { get; set; }
}
Метка изменяется на основе пользователя/клиента, поэтому она не может быть атрибутом DataAttribute. Если при возникновении проблем с обратной обработкой необходимо перерисовать всю страницу. В этом суть проблемы предыдущего поста. Принятое решение состоит в том, чтобы сделать это:
@Html.DisplayTextFor(model => model.Label)
@Html.HiddenFor(model => model.Label)
@Html.EditorFor(model => model.FirstName)
Это имеет смысл в том, что он работает. Но наши модели намного сложнее и обширнее. Этот метод приведет к тонне скрытых полей, которые кажутся очень грязным решением.
Это приводит меня к комментарию JP:
ASP.Net MVC Возвращает значение метки для вашего контроллера
Решение состоит в том, чтобы перезагрузить модель. Но это не просто перезагрузка, это также слияние, поскольку вы хотите сохранить любые изменения данных на стороне клиента.
default: SimpleClass { Label="TheLabel", FirstName="Rob"}
postedback: SimpleClass { Label="", FirstName="Steve" }
we want: SimpleClass { Label="TheLabel", "FirstName="Steve" }
Мой вопрос заключается в том, имеет ли MVC хороший способ узнать, какие поля были отправлены назад, чтобы он сливался правильно? Нам нужно было бы только объединить поля обратной связи, а не пустые свойства.
Или лучше просто просто удалить всю ретрансляцию и не отправить форму? Это позволяет избежать проблем с перезагрузкой модели при отправке.
Update
Чтобы дать кредит Пабло, я принял его решение. Чтобы увидеть мой простой пример его решения, отметьте комментарий Роберта Харви в нижеприведенных ответах: