Вызов дочернего EditorTemplates из Parent

Допустим, у меня есть простая модель:

public Vehicle {
    public int year;
}

И у меня есть другая модель, которая вытекает из этого:

public Car : Vehicle {
    public string make;
}

У меня есть EditorTemplate для автомобиля, который позволяет вам установить год. Он хранится в Views/Shared/EditorTemplates:

@model Vehicle
Year: @Html.EditorFor(m => m.year)

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

Я бы подумал, что-то вроде этого будет работать:

@model Car
@Html.EditorForModel("Vehicle")
Make: @Html.EditorFor(m => m.make)

... но по какой-то причине это не так. Мой взгляд так прост:

@model Vehicle
@Html.EditorForModel()

Это представление в конечном итоге вызывает мой шаблон автомобиля, когда я передаю модель автомобиля, так что это работает. Но единственное, что появляется, это редактор для make. Ничего за год. Таким образом, линия @Html.EditorForModel("Vehicle") похоже, ничего не делает вообще. Он не вызывает шаблон редактора транспортных средств.

Есть идеи? Оба эти шаблона находятся в /Views/Shared/EditorTemplates, и мне интересно, имеет ли это какое-либо отношение к этому. Я старался @Html.EditorForModel("~/Views/Shared/EditorTemplates/Vehicle")и добавил.cshtml к нему, ни работал.

1 ответ

Решение

Есть обходной путь по крайней мере. Я изменил свой взгляд на:

@model Vehicle
@Html.EditorForModel("Vehicle")
@Html.EditorForModel()

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

Но почему он не может вызвать EditorTemplate из другого EditorTemplate? Это похоже на ошибку для меня...

Другие вопросы по тегам