Asp.net ascx中的按钮,通过查询循环,发送参数或唯一标识
在大多数web语言中,这是一个简单的三行过程 例如phpAsp.net ascx中的按钮,通过查询循环,发送参数或唯一标识,asp.net,ascx,Asp.net,Ascx,在大多数web语言中,这是一个简单的三行过程 例如php <?php foreach (x in y) {?> <td><a href="">my button #<?php echo ++i;?></a></td> <? } ?> 我觉得首先必须使用CommandName/参数是荒谬的。 人们说“你不能把服务器端代码和客户端代码混在一起”。我不是,对吧? 该代码段的全部都是在服务器端生成的。 它查询数据库
<?php foreach (x in y) {?>
<td><a href="">my button #<?php echo ++i;?></a></td>
<? } ?>
我觉得首先必须使用CommandName/参数是荒谬的。
人们说“你不能把服务器端代码和客户端代码混在一起”。我不是,对吧?
该代码段的全部都是在服务器端生成的。
它查询数据库,循环记录,并输出一个表。这很有效。
但是CommandName拒绝处理我的变量。
因此,我无法确定单击了哪一行。我用URL参数对href进行编码,并通过POST进行处理。 荒唐的问题解决了
当然欢迎任何关于如何快速执行此操作的建议,无论是正确的方法还是不正确的方法。您在示例中做了一些错误的事情:您使用WebForms(使用ASP.NET“WebControl”),就好像这两种模式非常不同时使用PHP一样。您还混合了视图级逻辑(输出到客户机)和业务逻辑(数据库调用)。您也没有对输出进行HTML编码,这意味着您的代码容易受到XSS攻击。这是一个肮脏的快速脚本,供有权通过DNN平台显式访问的管理员短期使用。所以安全性不是问题,在一个简单的循环中用简单的按钮生成一个简单的页面所花费的时间是。我真的需要跳过50圈才能完成这样一项简单的任务吗?忽略了这是一个糟糕的代码这一事实,以及其中涉及的道德问题。上面的代码基本上是运行的,因为它在服务器端处理循环和输出。将动态值放入文本属性中真的有那么大的难度吗?说真的,这和经典的ASP无关。如果你是标签,你更有可能得到你想要的结果。
<% using (SqlDataReader reader=Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteReader(Config.GetConnectionString(),CommandType.Text,"SELECT * FROM [dbo].[table] WHERE bHasBeenProcessed IS NULL")) { %>
<% while (reader.Read()) { %>
<tr>
<td><%=reader["Name"].ToString()%></td>
<td><%=reader["Email"].ToString()%></td>
<td><%=reader["datestamp"].ToString()%></td>
<td>
<asp:Button CommandName='<%#reader["id"].ToString()%>' id="cmdSave" text='Process It' OnClick="HandlerFunction" runat="server" cssclass="dnnPrimaryAction" />
</td>
</tr>
<% }} %>