Пользовательская привязка в ASP.NET MVC с соглашениями об именах - PullRequest
1 голос
/ 17 декабря 2009

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

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

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

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

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

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

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

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

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

1 Ответ

1 голос
/ 17 декабря 2009

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

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

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

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

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

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

...