È possibile definire il contenuto di un'espressione lambda (delegato, Azione, Func <>) con la sintassi del Rasoio, in modo che quando questo metodo modello viene eseguito nella vista, esso inserirà il contenuto del Rasoio?E 'possibile che una funzione lambda contenga la sintassi del rasoio e venga eseguita in una vista?
Lo scopo previsto è che i nostri sviluppatori possano definire i propri contenuti personalizzati da inserire in un punto particolare nella vista di CustomControl.
Quanto segue è un codice di esempio semplificato che riproduce il layout corrente. Le parti particolari del focus sono la definizione del metodo RenderSideContent e la sua chiamata in esecuzione.
Index.cshtml
@model My.PageModel
@My.CustomControl(new CustomControlModel
{
AreaTitle = "Details",
RenderSideContent =() =>
{
<div>
@using (My.CustomWrapper("General"))
{
My.BasicControl(Model.Controls[0])
}
</div>
}
})
CustomControl.cshtml
<div>
@Model.AreaTitle
<div class="my-custom-content">
@Model.RenderSideContent()
</div>
</div>
I era certo che quello era il problema, ma non sapevo se esistesse un modo simile per aggirarlo. Sarebbe bello se ci fosse un modo per iniettare direttamente la sintassi del Razor in qualche modo, senza richiedere al mio team di costruire manualmente le proprie stringhe. Per il momento, ho appena implementato una funzione wrapper e mixata in un Html.Partial. – haferje