2012-03-06 49 views
9

我在我的应用程序中使用Chromatron主题作为管理面板。有一个侧边栏小工具,它具有HTML内容,并有一点CSS技巧,可以显示完全不同。如何将HTML内容传递到MVC-Razor中的部分视图,如“for”块

<section class="sidebar nested"> 
    <h2>Nested Section</h2> 
    <p>Lorem ipsum dolor sit amet, conse ctetur adipiscing elit. Maec enas id augue ac metu aliquam.</p> 
    <p>Sed pharetra placerat est suscipit sagittis. Phasellus <a href="#">aliquam</a> males uada blandit. Donec adipiscing sem erat.</p> 
</section> 

我想有一个部分认为这样使用:

@Html.Partial("Path/To/Partial/View"){ 
    <h2>Nested Section</h2> 
    <p>Lorem ipsum dolor sit amet, conse ctetur adipiscing elit. Maec enas id augue ac metu aliquam.</p> 
    <p>Sed pharetra placerat est suscipit sagittis. Phasellus <a href="#">aliquam</a> males uada blandit. Donec adipiscing sem erat.</p> 
} 

TBH,我想有功能,例如我有一个@for(...){ }块。 这可能在剃刀吗?

+1

我不知道这是你想要的,但看看:http://lostechies.com/hugobonacci/2011/07/11/templates-with-razor/ – 2012-03-06 17:58:10

+0

谢谢Felipe。但这不是我正在寻找的东西,或者我可能无法使其工作。我需要与'for'块相同的功能。我想有一个尾部块,可以插入其他'@'razor指令或HTML内容;完全像'for'块... – Achilles 2012-03-07 11:07:26

+0

我正在尝试做同样的事情;看到我的[*非常相似* SO问题](http://stackoverflow.com/q/21760850/173497)。我发现的最接近的是@FelipeOriani提到的帖子。 'HtmlHelper'扩展方法也可以工作,但我还没有想出将它用作视图或局部视图的HTML存储。但是,实际上,我只是放弃了辅助函数语法的括号语法。 – 2014-02-21 19:20:53

回答

15

我有同样的困境。尝试使用Func属性创建视图模型类型,然后将html作为委托来传递。

public class ContainerViewModel 
{ 
    public String Caption { get; set; } 
    public String Name { get; set; } 
    public Int32 Width { get; set; } 
    public Func<object, IHtmlString> Content { get; set; } 
} 

@Html.Partial("Container", new ContainerViewModel() 
{ 
    Name = "test", 
    Caption = "Test container", 
    Content = 
    @<text> 
     <h1>Hello World</h1> 
    </text>, 
    Width = 600 
}) 

你可以在你的部分中这样称呼它。

@Model.Content(null) 

希望这适用于你。

它的工作原理,因为@ ...语法创建一个小的HtmlHelper你消耗模型(你正在声明这里object型,并通过null的),并返回一个IHtmlString

如果在内容中使用@ Html.BeginForm,请注意表单值不会发布到服务器。

因此,将您的表单包装在容器周围。

+1

我喜欢这个解决方案,但<动态,...感觉真的很脏,所以我做了一些戳。事实证明,你正在创建一个隐含的HtmlHelper,它需要一个Model,所以输入到Func的参数的类型是你喜欢的任何东西(如果你想要的话),并且返回类型总是IHtmlString。编辑答案反映了这一点。完美的作品! – 2014-08-02 03:45:06

+0

这个解决方案绝对精彩!我可以用周围的HTML内容创建我的小部件/部分,并使用此方法在其中注入内容。它很干净,工作得很好!谢谢! – 2016-08-29 11:20:26

0

看起来你想要某种类型的htmlhelper函数来生成该内容。你有没有考虑过将它作为帮手而不是局部视图来实现?

+0

我已经研究过“内联助手”,它完成了这项工作;实际上有几种方法可以将内容传递给占位者;但我认为如果我可以使用上面显示的符号这样的符号,我的HTML代码将更加清晰。 – Achilles 2012-03-30 20:56:48

相关问题