【问题标题】:PostBackUrl not available on Html ButtonsPostBackUrl 在 Html 按钮上不可用
【发布时间】:2009-08-18 02:54:00
【问题描述】:

我们目前正在使用PostBackUrlasp:Button 执行跨页回发:

<asp:Button runat="server" PostBackUrl="processing.aspx" />

生成这个 javascript onclick 东西:

<input type="submit" name="ctl03"
    onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions('ctl03', ', false, ', 'processing.aspx', false, false))" />

我们想将其切换为使用普通的 &lt;button runat="server"&gt; (easier to style) 但它们不支持 PostBackUrl

所以我想:如果只是在我的 &lt;button&gt; 元素中使用上述 JavaScript 会怎样?

<button runat="server" name="ctl03"
    onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions('ctl03', '', false, '', 'processing.aspx', false, true))">
</button>

而且 waddayaknow,它有效。

以前有人见过这种情况吗?如果我继续这样做,会对我或我的孩子造成什么伤害?

【问题讨论】:

  • 只是为了澄清-为什么将跨页回发放在控件而不是表单上?您是否有一些控件可以回发到原始页面?
  • @Mark:是的,一些按钮回发到同一页面,一个不应该。

标签: asp.net javascript postback


【解决方案1】:

有趣的问题,我刚刚查看了 ClientScript 的 GetPostBackEventReference 方法,我得到了什么:

ASP.NET 页面上的按钮:

<button id="Button2" runat="server" name="Button2"></button>

在代码隐藏处:

PostBackOptions postBackOptions = new PostBackOptions(Button2);
postBackOptions.ActionUrl = "processing.aspx";
Button2.Attributes.Add("onclick", 
    ClientScript.GetPostBackEventReference(postBackOptions));

渲染结果:

<button id="Button2" name="Button2" 
    onclick="WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;Button2&quot;, &quot;&quot;, false, &quot;&quot;, &quot;processing.aspx&quot;, false, true))">
</button>

【讨论】:

  • 这可能是更好的方法。
  • 漂亮,谢谢。我从来没有真正使用过ClientScript.GetPostBackEventReference,也没有意识到它需要选项。
【解决方案2】:

“可能不会”,但您依赖的 ASP.NET JavaScript 的实现细节可能会随着时间而改变。

说实话,我实际上并没有意识到有一个“

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    • 2020-10-01
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 2010-09-17
    相关资源
    最近更新 更多