从 MVC 中的 lambda 渲染 Html
我有以下代码来生成列表,并允许开发人员根据需要自定义输出。
<% Html.List<MyList>(item => item.Property).Value(item => return "<div>" + item.Property + "<br/>" + item.AnotherProperty + "</div>").Render() %>
这并不理想,我怎样才能允许开发人员添加类似于其他控件的html。
<% Html.List<MyList>(item => item.Property).Value(item => %> <div><%=item.Property%><br/><%=item.AnotherProperty%></div><%).Render() %>
这种方式对于 mvc 的其余部分来说更加干净和标准。
I have the following code to generate a list and will allow developers to customize the output if needed.
<% Html.List<MyList>(item => item.Property).Value(item => return "<div>" + item.Property + "<br/>" + item.AnotherProperty + "</div>").Render() %>
This is not ideal, how can I allow the developers to add the html similar to other controls.
<% Html.List<MyList>(item => item.Property).Value(item => %> <div><%=item.Property%><br/><%=item.AnotherProperty%></div><%).Render() %>
This way is much cleaner and standard with the rest of mvc.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
<%=%>标签只是 Response.Write 的快捷方式。如果您仔细想想,lambda 表达式只是允许您将 Response.Write 代码的执行推迟到适当的时间。
因此,重要的部分是调用 Response.Write 来构建列表,当需要注入自定义模板时,我只需执行 lambda,它会执行 Response.Write 来注入模板。
下面是一些示例代码来帮助说明:
然后,要使用 Helper,请执行以下操作:
这是一个绝妙的技巧!
The <%=%> tags are simply a shortcut for Response.Write. If you think about it, the lambda expression is simply allowing you to defer execution of the Response.Write code until the appropriate time.
So, the important part is to call Response.Write to build your list, and when it’s time to inject the custom template, I just execute the lambda which does a Response.Write to inject the template.
Here is some example code to help illustrate:
Then, to use the Helper, do the following:
This is a neat trick!