如何从_Layout.cshtml为特定类调用“EditorFor”?

时间:2012-03-30 14:59:59

标签: c# asp.net-mvc-3 model html-helper

基本上,我不是编写普通的旧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中声明的输入集合。

如果这是一个强类型的视图,那么如果我去了会很好:

@Html.EditorForModel()

但是,由于这是在_Layout.cshtml文件中运行的,我还需要其他东西。我无法想出办法来做到这一点。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您需要创建一个强类型为BuzonDeSugerenciaModel类的部分视图。此部分视图将显示在您的Views > Shared目录中。

像这样(_BuzonDeSugerenciaModel.cshtml):

@model BuzonDeSugerenciaModel

@Html.EditorForModel()

然后,在_Layout.cshtml中,您可以致电:

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

您需要将BuzonDeSugerenciaModel的实例作为第二个参数传递给Partial()。如果你没有通过Controller表格,那么这样的话会起作用:

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