<asp:button commandargument =“ <%:” variable =“”%=“”>不起作用-“ variable”未填充“ value”

时间:2019-03-29 12:05:49

标签: c# asp.net

我正在尝试将变量传递到我的“ asp:Button CommandArgument”中-我知道在设置了runat = server的情况下我必须跳过一些箍,但是我已经尝试了到目前为止找到的所有内容,但无济于事

我知道我的代码运行良好,因为如果我在“ asp:Button CommandArgument”中显式定义变量,则一切正常-但是,只要我尝试通过<%%>语法插入变量?变量不会被其表示的字符串替换

我正在使用vStudio 2019社区预览版(和2017)作为我的IDE,以.net Framework 4.7.2为目标-一切都构建良好,并且我知道该变量的值已设置-这只是没有将其纳入我的“ asp:Button CommandArgument”,而我需要它

我已经尝试了所有发现的东西-我找到的所有<%$>语法的排列,都尝试使用CodeExpressionBuilder

我有问题的代码的相关部分是

<% if (variable is "value") { %>

<asp:Button ID = "button1" 
    runat = "server" 
    Text = "Processing '<%: variable %>' Records" 
    CommandArgument = '<%: variable %>' 
    OnCommand = "button1_Click" 
/>

<% } %>

我希望我将插入到“ asp:Button CommandArgument”中的变量替换为其当前值

我得到什么?各种错误消息以及“”或“包裹的<%:<%#<%= variable%>”的字面翻译无济于事

我知道我可以对一些我想完成的事情进行硬编码-但这并不是最佳选择,当我想通过“ asp:Button CommandArgument”将可变日期传递给我的过程时,这也无济于事

我知道我一定做错了-但是,对于我的一生,无法弄清楚什么

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

ASP.NET不允许您这样声明控件:

<asp:Button ID = "button1" 
    runat = "server" 
    Text = "Processing '<%: variable %>' Records" 
    CommandArgument = '<%: variable %>' 
    OnCommand = "button1_Click" 
/>

原因是<asp:Button … />在任何内联语句(例如<%: variable %>)之前由解释器进行了预处理。

要设置/修改ASP.NET表单控件的属性,必须在代码隐藏中更改它们。最受欢迎的地方将是Page_Load()事件。像这样:

void Page_Load(object sender, EventArgs e)
{
   if (!Page.IsPostBack)
   {
       button1.Text = "Processing " + variable + " Records"; 
       button1.CommandArgument = variable;
   }
}