Пользовательская привязка в ASP.NET MVC с соглашениями об именовании

StackOverflow https://stackoverflow.com/questions/1918994

Вопрос

У меня есть представление, в котором я использую соглашение об именовании для своих текстовых полей, чтобы указать, что следует делать с содержимым, как только оно будет отправлено обратно на мой контроллер.

Формат похож на:

<input type="text" name="RegistrationLine#ID" /> для получения обновлений

<input type="text" name="CreateRegistrationLine#LineNumber" /> для создания

Теперь, поскольку я использую это соглашение об именовании, обычная привязка к модели невозможна.Но я немного почитал по этому вопросу и нашел некоторые указания на то, что можно было бы написать пользовательскую привязку модели, которая должна была бы помочь анализировать и привязывать эти элементы формы и корректно создавать экземпляры объектов.

Пожалуйста, прочтите: Привязать formValue к свойству с другим именем, ASP.NET MVC

Это немного похоже на то, что я делаю, за исключением того, что у меня есть дополнительная сложность с добавлением информации в formelement-name, к которой я пытаюсь привязаться.

Я здесь не совсем прав?и если нет, может ли кто-нибудь из вас скинуть несколько строк кода, чтобы показать, как бы вы запустили этот model-binder..

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

Это было полезно?

Решение

Я вроде как должен согласиться с @jfar и @omar.Я не думаю, что пользовательская модель binder - это то место, где вы хотите быть в данном случае.

Вы можете передать сложный тип своему представлению и просто использовать точку, как упоминал @jfar.

id="Model.Person.Name.FirstName" будет с радостью привязан к объекту с именем Person, в котором есть класс с именем Name, имеющий свойство FirstName.

Теперь, если вы хотите выполнить некоторые специальные проверки данных, вы могли бы реализовать частичный класс, который выполнял бы проверки и т.д. И заполнял ошибки ModelState.

public partial class Name
{
  public void Validate(){ }
  public int CreateRegistrationLine(){ }
  public bool DoSpecialActions(){ }
}

Немного неясно, что делают ваши особые действия, поэтому мой пример выше может быть не тем, что вы хотите.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top