通过Response.Write控制服务器

时间:2011-11-28 05:22:05

标签: asp.net c#-4.0

我正在尝试从.ashx处理程序文件中将html块写入.aspx页面。在处理程序文件中,我正在尝试编写服务器标记

<asp:updatepanel id="UpdatePanel6" childrenastriggers="True" updatemode="Always" runat="server">
<contenttemplate>
<ajaxtoolkit:rating id="Rating6" autopostback="True" emptystarcssclass="Empty" filledstarcssclass="Filled" waitingstarcssclass="Saved" starcssclass="ratingItem" cssclass="ratingStar" currentrating="2" maxrating="5" runat="server"> </ajaxtoolkit:rating>
</contenttemplate>
</asp:updatepanel>

但是这不会显示在相应的.aspx页面上。当我在firebug中检查它时,我看到那里的代码块而不是执行的部分应该是类似

 <div id="UpdatePanel11">
<div id="Rating11" class="ratingStar">
<input id="Rating11_RatingExtender_ClientState" type="hidden" value="2" name="Rating11_RatingExtender_ClientState">
<a id="Rating11_A" style="text-decoration:none" title="2" href="javascript:void(0)">
<span id="Rating11_Star_1" class="ratingItem Filled" style="float:left;">&nbsp;</span>
<span id="Rating11_Star_2" class="ratingItem Filled" style="float:left;">&nbsp;</span>
<span id="Rating11_Star_3" class="ratingItem Empty" style="float:left;">&nbsp;</span>
<span id="Rating11_Star_4" class="ratingItem Empty" style="float:left;">&nbsp;</span>
<span id="Rating11_Star_5" class="ratingItem Empty" style="float:left;">&nbsp;</span>
</a>
</div>

有人可以帮助我指出我在这里缺少的东西吗?谢谢 !     

2 个答案:

答案 0 :(得分:2)

你不能这样做。 Response.Write直接注入输出流,无需任何处理。 .aspx页面通过构建控制树(由.aspx文件中的文字标记和控制标记组成)生成其输出,并可能在代码中动态添加更多控件。然后以自上而下的顺序评估树的节点以生成HTML,它们通过Response.Write调用发送回浏览器。

与.aspx页面不同,.ashx处理程序不处理控件 - 没有控制树。您有责任自己阅读请求并生成原始响应文本。

听起来你正试图动态创建控件;在这种情况下,使用.aspx文件并将控件添加到代码隐藏文件中的树。

答案 1 :(得分:0)

如卡尔所说,这将有点难以实现。如果你需要做的只是创建一个动态的评级,我建议使用page.Controls.Add并为它们添加处理程序,以便他们可以在用户点击它们时进行处理。如果您需要帮助,请告诉我们。