asp.net-mvc-3 – ASP.NET MVC3中的“返回类型”
发布时间:2020-12-16 06:29:14 所属栏目:asp.Net 来源:网络整理
导读:我试图弄清楚如何(或者是否可能)编写可以通过以下方式调用的 HTML帮助器方法: @Html.MyHelper("some string parameter",@text table tr tdsome html content in a "template" @Model.SomeProperty/td /tr /table/text) 这个想法是允许用户创建自己的模板以
我试图弄清楚如何(或者是否可能)编写可以通过以下方式调用的
HTML帮助器方法:
@Html.MyHelper("some string parameter",@<text> <table> <tr> <td>some html content in a "template" @Model.SomeProperty</td> </tr> </table> </text>) 这个想法是允许用户创建自己的模板以传递给帮助者.随着一些讨论,我想出了这个代码: public static MvcHtmlString jQueryTmpl(this HtmlHelper htmlHelper,string templateId,Func<object,HelperResult> template) { return MvcHtmlString.Create("<script id='" + templateId + "' type='x-jquery-tmpl'>" + template.Invoke(null) + "</script>"); } 这有效,但我不明白为什么或者它是否有意义.有人可以解释一下< text>实际上是在后台,我怎么能在上面描述的上下文中使用它? 谢谢 解决方法
特殊的< text>标签的存在是为了允许您在Razor解析器通常选择代码模式的情况下强制从代码转换到标记.例如,if语句的主体默认为代码模式:
@if(condition) { // still in code mode } 剃刀解析器具有在检测到标记时自动切换到标记模式的逻辑: @if(condition) { <div>Hello @Model.Name</div> } 但是,您可能希望切换到标记模式而不实际发出一些标记(因为上面的情况会发出< div>标记).您可以使用< text>阻止或@:语法: @if(condition) { // Code mode <text>Hello @Model.Name <!-- Markup mode --></text> // Code mode again } @if(condition) { // Code mode @:Hello @Model.Name<!-- Will stay in markup mode till end of line --> // Code mode again } 回到你的问题:在这种情况下你不需要< text>标记,因为您的模板已经有标记将触发Razor中的正确行为.你可以写: @Html.MyHelper("some string parameter",@<table> <tr> <td>some html content in a "template" @Model.SomeProperty</td> </tr> </table>) 这样做的原因是因为代码上下文中的Razor解析器识别@< tag>< / tag>模式并将其转换为Func< object,HelperResult>. 在您的示例中,生成的代码看起来大致如下: Write(Html.MyHelper("some string parameter",item => new System.Web.WebPages.HelperResult(__razor_template_writer => { WriteLiteralTo(@__razor_template_writer,"<table>rn <tr>rn <td>some html content in a "template" "); WriteTo(@__razor_template_writer,Model.SomeProperty); WriteLiteralTo(@__razor_template_writer,"</td>rn </tr>rn </table>"); }))); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 你在.NET中最喜欢的功能是什么?
- js触发asp.net的Button的Onclick事件应用
- asp.net – 用于vs 2010安装和配置的Web API
- .net core使用Elastic ARM+Kibanat添加程序性能指标监控及日
- asp.net-mvc – 显示用户内容可用操作的干净/干燥方法是什么
- asp.net-mvc – 如何在ASP.NET MVC 1.0中实现与ASP.NET MVC
- asp.net – 你如何’规范’一个Web服务器来支持给定的应用程
- asp.net – 拒绝访问端口“COM1”
- asp.net – project.json中的“依赖关系”和“框架集”之间
- 深入理解C# 3.x的新特性(5):Object Initializer 和 Coll
推荐文章
站长推荐
热点阅读