【问题标题】:Access control attribute in code代码中的访问控制属性
【发布时间】:2009-11-05 19:57:50
【问题描述】:

我给按钮一个名为notetype的属性。

 <asp:ImageButton ID="bttnSave" notetype="none" runat="server" ImageUrl="~/images/bttnSave.gif" onclick="bttnSave_Click" />

我有一个来自不同按钮点击的函数,该函数将该变量设置为某种类型。

function addnotes(Type,IncId,Acc,Wit,Claim,Inj,Prop,Media) {
    var bttnopenmodal = $get('<%=bttnopenmodal.ClientID %>');
    var bttnSave = $get('<%=bttnSave.ClientID %>');

    if (Type == 'Inc') {
        bttnSave.notetype = 'Inc';

    }

    bttnopenmodal.click();
    return false;
}

但是在按钮的C#代码中:

protected void bttnSave_Click(object sender, ImageClickEventArgs e)
{
    Response.Redirect(bttnSave.Attributes["notetype"]);
}

保存按钮的notetype 的值仍然是“none”,即使我在javascript 中更改了它。我什至提醒确保它改变了笔记类型并且确实如此。我试图用更新面板更新按钮无济于事。如何正确更改该笔记类型?

【问题讨论】:

  • 只有表单控件元素的value 属性与表单帖子一起发送(对于&lt;input type="image" /&gt;,根本不会发送任何内容)。您不能仅仅因为您将其指定为属性,就指望浏览器知道在帖子正文中发送"notetype=none"。这就是&lt;input type="hidden" name="notetype" value="none" /&gt; 的用途。 Viewstate 让您忘记这一切,直到您尝试在客户端中更改它并且整个事情都爆炸了。
  • 将此作为答案发布,我会接受。我使用了隐藏字段。

标签: c# .net asp.net javascript visual-studio


【解决方案1】:

只有表单控件元素的value 属性与表单帖子一起发送(对于&lt;input type="image" /&gt;,根本不会发送任何内容)。您不能仅仅因为您将其指定为属性,就指望浏览器知道在帖子正文中发送"notetype=none"。这就是&lt;input type="hidden" name="notetype" value="none" /&gt; 的用途。

Viewstate 让您忘记这一切,直到您尝试在客户端中更改它并且整个事情都爆炸了。

【讨论】:

    【解决方案2】:

    您的代码只会获取客户端对可以发布的数据的更改。自定义属性中的数据不会在回发时发送回服务器,因此它只会(通过视图状态)知道该属性在页面呈现时具有什么值。

    【讨论】:

    • 那是因为。除了我可以更改隐藏字段的值并且它可以工作。
    • 只是不想使用隐藏字段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    • 1970-01-01
    • 1970-01-01
    • 2017-08-05
    • 2016-03-26
    • 2022-11-06
    • 1970-01-01
    相关资源
    最近更新 更多