【问题标题】:Unable to run C# method and avoid postback when I click on my ImageButton单击 ImageButton 时无法运行 C# 方法并避免回发
【发布时间】:2016-09-23 08:43:14
【问题描述】:

我有以下 ImageButton,它可以切换日历控件的可见性属性。

<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/calendar.png" OnClick="Display_Calendar1"/>

问题是,当我点击它时,它会发送一个与我的其他一些代码冲突的回发命令。我已经看到有多个关于此的线程,其中最常见的解决方案是调用“return false;”。在 OnClick 事件上。但是,我仍然需要运行日历切换方法:

//cStart_Date is the calendar control and tbStart_Date is a textbox where I write down the chosen date.
protected void Display_Calendar1(object sender, ImageClickEventArgs e)  
{
    if (IsValidDate(tbStart_Date.Text))
    {
        cStart_Date.SelectedDate = Convert2Date(tbStart_Date.Text);
        cStart_Date.VisibleDate = cStart_Date.SelectedDate;
    }
    cStart_Date.Visible = !cStart_Date.Visible;
}

在我见过的所有示例中,函数在“return false;”之前运行是一个 JavaScript 函数,但我希望它运行我的 C# 方法。当我在浏览器上启动它时,这会导致服务器错误,显示 编译器错误消息:CS1026:) 预期

我也试过不带参数的方法protected void Display_Calendar1() 但结果是一样的...

【问题讨论】:

  • 要运行您的 C# 方法,您必须将 something 发送到服务器,因为 C# 方法正在服务器上运行。你能澄清一下这个问题到底是什么吗?您似乎对 Web 应用程序的运行方式和运行位置有些困惑?
  • 简而言之,我希望当我单击 ImageButton 时,日历控件变得可见(如果相邻的文本框具有有效的日期字符串,则具有选定的日期)。我希望在不触发 Page_Load (IsPostback) 的情况下完成此操作

标签: c# asp.net


【解决方案1】:

日历控制的切换也可以通过java脚本来完成。您需要使用图像按钮的 OnClientClick 属性。

<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/calendar.png" OnClientClick="ToggleCalendar"/> 

<script>
function ToggleCalendar() {
    var clndr= document.getElementById('cStart_Date');
    clndr.style.display = (clndr.style.display == 'none') ? 'block' : 'none';
}
</script>

您也可以在 Java 脚本功能中执行验证或其他操作。

【讨论】:

  • 我是一个 javascript 的新手,我可以像你一样通过 elementid 切换日历控件,但我不知道如何设置其 selectedDate、visibleDate 或使用 dateconversion 方法我设法管理不同的日期时间格式
  • Np.. :) 谷歌你的问题一一你会得到很多解决方案。 document.getElementById 是访问任何控件的基础。然后你就可以访问它们的属性了。
  • 我的意思是我的问题的重点是找出是否有另一种方法并避免使用 javascript..
  • 嗯...我现在可以看到的选项是 UpdatePanel。将您的控件放在更新面板中。检查它是否有效。
【解决方案2】:

好吧显然执行服务器端Click事件时无法避免回发。 updatePanel 将最小化渲染负载并最小化页面闪烁,但仍然会有回发调用,从而违背了我的目的。我想在客户端使用 javascript 是唯一的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多