2012-06-25 2 views
0

Я новичок в ASP.NET MVC3. Я создал один проект в ASP.NET MVC3 с использованием подхода Model First.
У меня следующие объекты: Customer и CallКак создать представление для разных целей?

связь между этими объектами являются одна (Заказчик) имеет много (вызовов). Я создал контроллеры для обоих этих объектов.

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

@Html.ActionLink("+Call", "Create", "Call", new { id = item.CustomerId }, null) 

После того, как щелкнув по этой ссылке, откроется окно для создания вызова. В представлении «Создать вызов» я хочу показать имя конкретного клиента.
Как использовать пройденный CustomerId? Как это сделать?

+0

Я бы создал новое действие для этого сценария, например 'CreateForCustomer (int id)' с отдельным представлением (частичный был бы идеальным для всплывающего окна). Вы можете сделать это с помощью 'RouteData', чтобы извлечь значение« id »в контроллере, затем получить информацию о клиенте из orm, а затем передать его в представление (т. Е. С помощью« ViewBag »). Проблема в том, что в представлении вам нужно написать много кода бритвы, чтобы генерировать html для двух разных сценариев, и это может стать беспорядочным. – lucask

ответ

1

В вашей CallController изменить Create действие принять id параметр:

public ActionResult Create(int id) 
{ 
    // TODO: Query the database to get the customer and his name 

    // If you use a ViewModel extend it to include the name of the customer 
    // Example: viewModel.CustomerName = retrievedCustomer.Name; 

    // Or you can pass it in the ViewBag 
    // Example: ViewBag.CustomerName = retrievedCustomer.Name; 

    return View(viewModel); // or return View(); 
} 

В представлении можно отобразить название, в зависимости от подхода, как:

@Model.CustomerName 

или

@ViewBag.CustomerName 

 Смежные вопросы

  • Нет связанных вопросов^_^