Как я могу вызвать «EditorFor» для определенного класса из _Layout.cshtml? - PullRequest
0 голосов
/ 30 марта 2012

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

<div class="contacto-container">
    <h1>Envíenos sus consultas:</h1>

    @Html.Editor("BuzonDeSugerenciaModel", "BuzonDeSugerenciaModel")

    <div class="separator"></div>    
</div>

Это не совсем то, что я думаю.

Это выводит:

<input id="BuzonDeSugerenciaModel" 
       class="text-box single-line" 
       type="text" value="" name="BuzonDeSugerenciaModel">

А не набор входов, который я объявил в классе Model, BuzonDeSugerenciaModel.

Если бы это был строго тип View, было бы хорошо, если бы я пошел:

@Html.EditorForModel()

Однако, поскольку это выполняется в файле _Layout.cshtml, мне нужно что-то еще. Я не могу понять, как это сделать.

Есть идеи?

1 Ответ

1 голос
/ 30 марта 2012

Вам необходимо создать частичное представление, строго типизированное для вашего BuzonDeSugerenciaModel класса.Это частичное представление будет находиться в вашем каталоге Views > Shared.

Примерно так (_BuzonDeSugerenciaModel.cshtml):

@model BuzonDeSugerenciaModel

@Html.EditorForModel()

Затем в вашем _Layout.cshtml вы можете позвонить:

@Html.Partial("_BuzonDeSugerenciaModel", Model.buzonDeSugerenciaModel)

Вам нужно будет передать экземпляр BuzonDeSugerenciaModel в качестве второго аргумента Partial().Если у вас нет одного пропущенного бланка Controller, будет работать что-то вроде этого:

@Html.Partial("_BuzonDeSugerenciaModel", new BuzonDeSugerenciaModel())
...