【问题标题】:Run C# function after two ASP TextBoxes have been filled填充两个 ASP 文本框后运行 C# 函数
【发布时间】:2014-05-20 21:24:48
【问题描述】:

我一直在努力寻找这个问题的答案,但我找到的每个答案似乎都与我真正想要的有所不同。

在运行将在文本框上工作的 C# 函数之前,我需要检查以确保已填写两个 ASP 文本框。

目前,我正在使用代码隐藏进行检查,但它很草率,必须回发才能工作。

所以我有:

<td>Start Date (mm/dd/yyyy):</td><td><asp:TextBox ID="startDate" runat="server"></asp:TextBox></td>
                <ajax:CalendarExtender ID="ce1" runat="server" TargetControlID="startDate"></ajax:CalendarExtender>

                <td>End Date (mm/dd/yyyy):</td><td><asp:TextBox ID="endDate"></asp:TextBox></td>
                <ajax:CalendarExtender ID="ce2" runat="server" TargetControlID="endDate"></ajax:CalendarExtender>

所以在使用 AJAX 运行 C# 程序之前,我需要一个 JS 函数来检查两个字段是否为空。我是 ASP 和 JS 的新手,但这个问题出现了,我认为这将是一个(某种)简单的解决方法。

我会假设:

function checkDates(startid, endid) {
    var s = document.getElementById(startid);
    var e = document.getElementById(endid);
    if( s != '' && e != ''){
       //Use ajax to run C# function
    }}

应该可以。但是我似乎找不到任何接近它的例子来了解在使用 ASP 而不仅仅是 HTML 时我需要做什么。

非常感谢任何输入! (我试图尽可能清晰,获得隧道视野..)

【问题讨论】:

  • 您的 TextBox 控件标签看起来格式不正确。 (第一个缺少右括号)您没有指定 'runat="server"'。
  • 谢谢!我一定是不小心按了删除键。我是 ASP 新手,所以 runat 还没有根深蒂固;)

标签: c# javascript asp.net ajax


【解决方案1】:

你快到了

function checkDates(startid, endid) {
  var s = document.getElementById(startid);
  var e = document.getElementById(endid);
  if( s.value != '' && e.value != ''){
     //Use ajax to run C# function
  }
}

您还应该在服务器端进行检查,以确保提供的参数不为空或为空。

【讨论】:

  • 呸!我忘记了.value!但是如何将 ASP 文本框中的 id 发送到 JS 函数呢?我已经使用 alert() 尝试查看是否有任何方法有效,但似乎没有一种组合对我有用。
  • 使用 ClientID 属性 - msdn.microsoft.com/en-us/library/…
  • 您将在 JavaScript 中以这种格式访问控件的客户端 ID -> document.getElementById('')
【解决方案2】:

这应该适合你。我构建了一个对象来帮助保持事物井井有条。使用 ClientID 获取元素并将引用存储在对象中。

无论您将处理程序绑定到什么,只需调用 Page.Handlers.CheckDates();

var Page =
{
    Members:
    {
        startDate: document.getElementById('<%=startDate.ClientID %>'),
        endDate: document.getElementById('<%=endDate.ClientID %>')
    },
    Handlers:
    {
        CheckDates: function ()
        {
            if (Page.Members.startDate.value.length > 0 && Page.Members.endDate.value.length > 0)
            {
                Page.Ajax.ValidateDates();
            }
        }
    },
    Ajax:
    {
        ValidateDates: function ()
        {
            //Put you ajax code here
        }
    }
}

【讨论】:

    【解决方案3】:

    除了 Kami 的回答,我相信 asp.net 会自动为所有 asp.net 控件添加一个标签以区分它们。如果您自己没有更改它,我相信默认值为“ct100_”。因此,如果您使用 jQuery 并且不使用 ajax 调用来获取 ClientID,则选择器将类似于“#ct100_idname”。

    http://www.asp.net/web-forms/tutorials/master-pages/control-id-naming-in-content-pages-cs

    编辑:

    您还可以使用内联服务器调用来获取 asp.net 控件的 ID

    http://weblogs.asp.net/asptest/archive/2009/01/06/asp-net-4-0-clientid-overview.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-01
      • 2016-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-23
      • 1970-01-01
      • 2014-10-01
      相关资源
      最近更新 更多