红包
◆ [2024-12-22 星期日 11:31] ◆ 您来自:3.145.84.128,欢迎您访问風雲工作室。 收藏本站 ◆ | ◆ 设为首页
联系站长(腾讯QQ)
5029111 [風雲]
站长当前离线
首  页 论坛交流 游戏频道 无忧脚本 旧版论坛 云服务器 聊 天 室 自助链接 来访记录 访客留言 搜索提供
位置:風雲工作室 - 论坛交流 - 技术专栏 - 后台开发 - Razor下@helper的调用问题 返回
主题:Razor下@helper的调用问题
Rimifon
★☆☆☆☆☆☆☆☆☆
积分:285
发帖:317
登录:2024/3/26
注册:2006/6/28
(1楼)Razor下@helper的调用问题
微软的WebMatrix中内置了Razor开发,虽然为开发Razor提供了很多简便,也带了些许不便,例如,无法在cshtml文件中自定义方法等。想了很多办法,发现@helper能帮我们实现类似自定义方法的功能。
如下代码:
@{
    Page.Str = "Hello";
    Test();
    @Page.Str
}
@helper Test()
{
    Page.Str = "World";
}
输出的结果是什么“World”?错了,实际结果仍然是“Hello”!

原来我们调用的“Test();”其实并不是我们定义的那个@helper Test(),执行Test()之后,返回的只是一个HelperResult对象,调用该对象的ToString或者ToHtmlString、WriteTo方法的时候,才会执行我们在helper中定义的那个lambda表达式。平时由于我们常用@Test()的方式,其实是隐性的调用了ToString()方法,故不会看到“调用了方法却得不到执行结果”的现象。


时间:2011年4月21日 10:44:43 IP:已记录 引用 回复

© Copyright 2006-2024,風雲工作室 All rights reserved.
湘ICP备05009306号QQ登录
操作 1 个库,连接 2 次,执行 7 次,耗时 109 毫秒。