Kann ich es nenne, ein "shared" editor-Vorlage aus, in einer "Bereiche" editor-Vorlage für das gleiche Modell?
Ich habe eine editor-Vorlage Speicherort, in:
Bereiche/Posts/Views/Shared/EditorTemplates/Frage.cshtml
Ich auch eins haben:
/Views/Shared/EditorTemplates/Frage.cshtml
Sowohl für das Modell ist das gleiche.
Was ich versuche zu tun, ist in eine Ansicht, in der Posts
Bereich, rufe meine editor-template in der Gegend, einige HTML-und dann Blase zurück bis zu den Haupt-shared-editor Vorlage.
Hier ist die Posts
EditorTemplate:
@model xxx.ViewModels.QuestionViewModel
@Html.Hidden("Id", (byte)Model.QuestionType)
@Html.EditorForModel()
Aber alle es tut, es machen, das versteckte Feld, nicht der Inhalt des shared-editor Vorlage.
Wenn ich loszuwerden, die Posts
- editor-Vorlage, die WG ist richtig dargestellt.
Ich vermute, MVC/Razor denkt, das ist rekursiv, oder was? Wie im Aufruf der gleichen Vorlage?
Gibt es eine Möglichkeit, ich kann sagen, es zu gehen zu den teilen?
Im Grunde genommen bin ich versucht zu re-verwenden Sie den HTML-Code in der gemeinsamen Vorlage, aber Spritzen einige sneaky HTML-von meiner eigenen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du kannst nur 1 Vorlage zur Laufzeit verwendet für einen bestimmten Typ. ASP.NET MVC sieht zunächst in Bereichen gemeinsamen Vorlagen-Ordner und da findet es eine entsprechende Vorlage gibt es, hebt es auf und verwendet es. Dann hört auf zu suchen, und die Vorlage, die Sie in das Haupt-shared-Ordner wird nicht verwendet. Es ist by design.
Ja, Sie können explizit angeben, den Speicherort der Vorlage, aber dann wird es nicht die Vorlage verwenden, in Ihren Bereichen Ordner:
@Html.EditorForModel("~/Views/Shared/EditorTemplates/Question.cshtml")
oder es ist unmöglich zu nutzen?Als das HTML-markup für die gemeinsamen - editor-Vorlage war sehr einfach (nur und machte eine checkbox und ein label), die ich abstrahiert das markup in eine benutzerdefinierte HTML-helper, dann rief dieser aus den freigegebenen Vorlage und meine Gebiete Vorlage.
~/Areas/Posts/Views/Shared/EditorTemplates/Question.cshtml
:~/Views/Shared/EditorTemplates/Question.cshtml
:@Html.CheckBoxFor
und@Html.LabelFor
einfach zu versäubern die Vorlage HTML.htmlHelper.CheckBoxFor(model => model.SomeProperty)
undhtmlHelper.LabelFor(model => model.SomeProperty)
, da das benutzerdefinierte HTML-helper eingegeben wird, umQuestionViewModel
(e.gHtmlHelper<QuestionViewModel> htmlHelper
). Ein Blick auf mein code jetzt, ich landete die Kombination der checkbox und label-Helfer in einem, und nur der Aufruf, - e.g:@Html.CheckboxAndLabelForModel()