2016-12-30 3 views
0

Вот URL описания частичного вида в MVC:Требуется ли частичное представление модели, прошедшей с верхнего уровня?

https://docs.microsoft.com/en-us/aspnet/core/mvc/views/partial

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

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

ответ

2

Да. По умолчанию используется модель родительских представлений (view). Но вы всегда можете передать другую модель в явном виде (до тех пор, пока тип передачи модели будет тем же самым типом, к которому строго привязано представление).

@Html.Partial("MyPartialView",Model) 

Или

@{ var data = new MyClass { SomeProperty = "SomeValue"}; 
@Html.Partial("MyPartialView",data) 

Предполагая MyPartialView сильно типизированных к MyClass

@model MyClass

Например, если ваш основной вид сильно типизированных к Order класса, который имеет Customer свойство, как это

public class Order 
{ 
    public int OrderId { set;get;} 
    public Customer Customer { set;get;} 
} 
public class Customer 
{ 
    public string Name { set;get;} 
} 

Вы можете вызвать частичный вид, который сильно типизированных к классу Customer из основного зрения, передавая Model.Customer

@model Order 
<h2>@Model.OrderId</h2> 
@Html.Partial("Customer",Model.Customer) 

Предположим, что ваш вид клиента сильно типизированных к Customer типа

@model Customer 
<h2>@Model.Name</h2> 

Вы можете вызвать частичный вид клиента из любой точки, если у вас есть объект Customer, чтобы передать его. (Если ваше родительское представление строго типизировано для класса Customer, вам не нужно явно передавать его)

+0

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

+0

Нет, у него может быть другой тип. См. Ответ – Shyju

+0

спасибо shyju, поэтому кажется, что я мог бы называть @ Html.Partial («CustomerDetails») без параметров модели, и MVC автоматически попытается привязать родительскую модель по умолчанию? В приведенном выше примере, который будет моделью клиента? – user7242966

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