C# Aspx Web窗体命令参数
我有一份记录清单。每个记录都有唯一的id和文本。当我在页面上打开它时,每条记录都有一个按钮,它们引用方法C# Aspx Web窗体命令参数,c#,asp.net,button,C#,Asp.net,Button,我有一份记录清单。每个记录都有唯一的id和文本。当我在页面上打开它时,每条记录都有一个按钮,它们引用方法DeleteRecord(objectsender,EventArgs e)。但这个按钮不知道记录的id。我尝试在CommandArgument上按id,但它不起作用 有没有其他方法可以解决这个问题,或者我在填写命令时犯了错误 Profile.aspx: } %> 当我在方法中的Profile.cs上暂停程序时: 受保护的void DeleteRecord(对象发送方,事件参数e) (按钮
DeleteRecord(objectsender,EventArgs e)
。但这个按钮不知道记录的id。我尝试在CommandArgument上按id,但它不起作用
有没有其他方法可以解决这个问题,或者我在填写命令时犯了错误
Profile.aspx:
}
%>
当我在方法中的Profile.cs上暂停程序时:
受保护的void DeleteRecord(对象发送方,事件参数e)
(按钮)sender.CommandArgument
始终==”;
中的问题
CommandArgument=”“
,或我的DNA。
请原谅我的英语不好。您可能应该绑定到命令上的
事件。它将为您提供具有您的属性的CommandEventArgs e
有关更多详细信息,请参阅
编辑:
例如:
private void DeleteRecord(Object sender, CommandEventArgs e)
{
var recordId = (string)e.CommandArgument;
DatabaseModel.Delete(recordId);
}
在aspx页面中:
<%
foreach (DAL.Record record in records)
{
<b><% Response.Write(record.Text);%></b>
<asp:Button CommandName="Delete" CommandArgument="<%#Eval("record.Id")%>" runat="server" OnCommand="DeleteRecord" />
}
%>
}
%>
如果这没有帮助,请确保为包含数据绑定表达式的控件触发DataBinding
事件,因为对于每个这样的控件,都会生成这些表达式的事件处理程序。这是因为
语法 不能在服务器控件中使用内联脚本,即:
<asp:Button CommandName="Delete" CommandArgument="<%#Eval("record.Id")%>" />
错误,因为您试图在服务器控件的属性中使用服务器代码
与此相反,您必须手动构建按钮(作为HTML控件,而不是服务器控件),或者必须使用中继器而不是foreach,并在中继器的ItemDataBound事件处理程序中分配CommandArgument。
<%
foreach (DAL.Record record in records)
{
<b><% Response.Write(record.Text);%></b>
<asp:Button CommandArgument=**'**<%#Eval("record.Id")%>**'** runat="server" OnClick="DeleteRecord" />
}
%>
}
%>
无论我使用OnCommand还是OnClick,这都无关紧要,因为我没有正确地填充CommandArgument。在msdn上,所有CommandName“s”和CommandArgument“s”都充满了神奇的字符串,程序员已经知道了这一点。无论如何,谢谢你试着帮助我。我已经编辑了我的答案。确保确实检查了数据绑定是否为firedCommandArgument=''。单引号。这行得通吗?不行,不行。另外,你可以用
代替
。但是真的。这真的很有帮助!非常感谢你!这里有一个例子!