MVC2 Как редактировать несколько связанных адресов клиентов - PullRequest
0 голосов
/ 17 декабря 2010

Клиент имеет адрес для выставления счета и доставки, поэтому, учитывая следующую схему базы данных

  • Customer (CustomerId)
  • Address (AddressId)
  • CustomerAddresses (CustomerId, AddressId)

И следующий класс Enitity Framework

public class Customer
{
    public IEnumerable<Address> Addresses { get; set; }
}

Я вывожу свои поля ввода в моем представлении так:

<% foreach (var address in Model.Addresses) { %> 

    <%: Html.TextBoxFor(model => address.Address1) %>

<% } %>

Когда я публикуюЗначения формы после ввода DeliveryAddress1 и BillingAddress1, а затем перебора ключей FormCollection. Я получаю следующее значение

Customer.address.Address1 = "DeliveryAddress1, BillingAddress1"

ВопросКак я могу различить две записи?

Ответы [ 2 ]

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

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

Итак, на вашем главном экране вместо того, чтобы писать весь код, который вы показали просто:

<%: Html.EditorFor(x => x.Addresses) %>

А затем создать шаблон редактора для адреса (~/Views/Home/EditorTemplates/Address.ascx)

<%@ Control 
    Language="C#" 
    Inherits="System.Web.Mvc.ViewUserControl<YourApp.Models.Address>" %>    
<%: Html.TextBoxFor(x => x.Address1) %>

Обратите внимание на имя и расположение шаблона редактора. Местоположение должно быть в папке EditorTemplates (оно также может быть в ~/Views/Shared/EditorTemplates/Address.ascx), а имя должно совпадать с именем класса (Address). ASP.NET MVC позаботится о визуализации шаблона для каждого элемента коллекции Addresses вашей модели.

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

Вы должны попробовать эту ссылку - она ​​помогает при связывании модели с несколькими столбцами:

http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...