【问题标题】:Anchor control in Literal文字中的锚点控制
【发布时间】:2011-05-02 16:41:07
【问题描述】:
using System;

namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {

        public void Download(object obj, EventArgs e)
        {
            Response.Write("abc");
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            Literal1.Text = "<a id='anc' href ='#' runat='server' onserverclick='Download'>Click Me</a>";
            Response.Write(Literal1.Text);

        }
    }
}

 <div>
    <asp:Literal ID="Literal1" runat="server"></asp:Literal>
 </div>

我有上面的代码片段。我正在尝试通过以下方式将文字中的锚点绑定到函数:onserverclick = "Download"

但是事件没有触发。要求是锚点仅通过文字呈现。

请帮忙。

【问题讨论】:

    标签: c# asp.net vb.net


    【解决方案1】:

    虽然您的 Literal1 控件是服务器端控件,但将 .Text 值设置为表示服务器控件将不起作用。

    也许使用 asp LinkButton 控件而不是文字

    因此您的 .aspx 页面将具有:

    <asp:LinkButton ID="abc" runat="server" OnClick="Download" Text="Download" />
    

    你的 .aspx.cs 后面的代码类似于:

    protected void Page_Load(object sender, EventArgs e)
    {
    
    }
    
    protected void Download(object sender, EventArgs e)
    {
        Response.Write("abc");
    }
    

    【讨论】:

    • 不,我们有文字中的锚标签。所以父级将永远是文字,它不能是链接按钮。
    • @Pankaj 您要求使用文字控件而不使用 Web 服务,如果不更改这两个标准之一,则此任务不太可能工作
    • 纠正措施是使用锚标记,因为我们不必更改控件。而不是它在字面之外。我们找到了解决方案。
    【解决方案2】:

    属性 runat="server" 在客户端代码中没有意义(这是您在此处生成的)。您可能需要求助于调用网络服务。

    【讨论】:

    • 不,我们只是想在单击此锚点时执行服务器端事件,而不使用 Web 服务。
    【解决方案3】:

    我们在文字之外使用锚标记。然后就可以正常使用了

    【讨论】:

      【解决方案4】:

      如果您不想使用 LinkBut​​ton,您可以将 Literal 替换为您在 Page_Load 上添加的文本(不完全确定为什么要这样做?)。

      然后运行 ​​AJAX 网络请求以运行 Download 方法。

      【讨论】:

      • 感谢您的回复:)。但我们已经找到了解决方案。
      猜你喜欢
      • 2014-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-23
      • 2010-11-29
      • 1970-01-01
      • 2016-10-19
      • 2015-04-26
      相关资源
      最近更新 更多