You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中获取HTML输入框(expiration)失焦值及从数据库赋值?

关于HTML输入框失焦后C#取值及页面加载时数据库赋值的实现方案

没问题,结合你给出的Ext.NET页面代码,我来帮你解决这两个需求:


一、失焦后通过C#获取输入框的值

你的input标签已经设置了runat="server",属于服务器端控件,这里提供两种常用的实现方式:

方式1:触发整页回传获取值

通过客户端blur事件触发页面回传,然后在后台捕获并获取输入值:

  1. 修改input标签,添加onblur事件触发回传:
<input id="expiration" type="text" placeholder="DD(uu)/MM(uu)/YY(uu)" class="masked" title="title" runat="server" 
       pattern="^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$|(uu\/([1-9]|0[1-9]|1[0-9]|2[0-9]|3[0-1])\/[0-9]{1,4})|(uu\/uu\/[0-9]{1,4})|(uu\/uu\/uu)" 
       data-valid-example="01/05/18"
       onblur="__doPostBack('expiration','')" />
  1. 后台C#代码中处理回传:
protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack)
    {
        // 判断回传的目标控件是expiration
        if (Request.Params["__EVENTTARGET"] == "expiration")
        {
            string inputValue = expiration.Value;
            // 这里可以执行你的业务逻辑,比如验证、存库等
        }
    }
}

方式2:AJAX异步获取(无刷新)

如果不想触发整页刷新,用AJAX异步传递值到后台:

  1. 添加客户端JS处理blur事件:
<script>
// 给输入框绑定失焦事件
document.querySelector('#expiration').addEventListener('blur', function() {
    const inputVal = this.value;
    // 发送AJAX请求到后台
    fetch('YourPage.aspx/SaveExpirationValue', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json; charset=utf-8'
        },
        body: JSON.stringify({ val: inputVal })
    })
    .then(response => response.json())
    .then(data => {
        console.log('值已成功传递到服务器');
        // 可以在这里添加成功后的UI反馈
    })
    .catch(error => console.error('请求出错:', error));
});
</script>
  1. 后台C#添加WebMethod接收值:
using System.Web.Services;

// 注意这个方法必须是静态的
[WebMethod]
public static void SaveExpirationValue(string val)
{
    // 这里就拿到了失焦后的输入值,可直接用于业务处理
    // 比如写入数据库或者做验证
}

二、页面加载/刷新时从数据库读值并设置到输入框

因为输入框是服务器端控件,直接在页面初始化阶段(非回传时)从数据库查询值并赋值即可:

后台C#代码示例

protected void Page_Load(object sender, EventArgs e)
{
    // 仅在首次加载或刷新时执行(排除回传场景)
    if (!IsPostBack)
    {
        // 从数据库查询目标值,这里是伪代码,你需要替换成实际的数据库操作
        string dbValue = GetExpirationDateFromDB();
        
        // 如果查询到值,就设置到输入框
        if (!string.IsNullOrWhiteSpace(dbValue))
        {
            expiration.Value = dbValue;
            // 如果数据库存的是DateTime类型,记得转成输入框要求的格式,比如:
            // expiration.Value = ((DateTime)dbValue).ToString("dd/MM/yy");
        }
    }
}

// 示例:从数据库读取日期的方法
private string GetExpirationDateFromDB()
{
    string result = string.Empty;
    // 这里写你的数据库查询逻辑,比如用SqlConnection
    /*
    using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["YourConnStr"].ConnectionString))
    {
        string query = "SELECT ExpirationDate FROM YourTableName WHERE YourCondition";
        var cmd = new SqlCommand(query, conn);
        conn.Open();
        var dbResult = cmd.ExecuteScalar();
        if (dbResult != null)
        {
            // 转换为输入框需要的日期格式
            result = ((DateTime)dbResult).ToString("dd/MM/yy");
        }
    }
    */
    return result;
}

注意点

  • 确保你的数据库连接字符串配置在Web.config的<connectionStrings>节点中,避免硬编码。
  • 数据库中的日期格式要和输入框的DD/MM/YY格式匹配,必要时做格式转换,防止显示异常。

内容的提问来源于stack exchange,提问作者aggicd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:27:53