Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Aspx Web窗体命令参数_C#_Asp.net_Button - Fatal编程技术网

C# Aspx Web窗体命令参数

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) (按钮

我有一份记录清单。每个记录都有唯一的id和文本。当我在页面上打开它时,每条记录都有一个按钮,它们引用方法
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=''。单引号。这行得通吗?不行,不行。另外,你可以用
代替
。但是真的。这真的很有帮助!非常感谢你!这里有一个例子!