制作留言簿:用户在多行文本框(留言内容)内只是按了几个回车或空格,并没写任何其他文本,如何禁止他提交?

i169net 2004-04-18 01:19:43
最近学着作了一个简单的留言簿,基本好了,但总觉得还有些不足——

留言内容:<asp:TextBox id="r" runat="server" TabIndex="6" Width="300px" TextMode="MultiLine" Height="80px" Rows="5" Columns="80"></asp:TextBox>

提交后,提取是:
string neirong=Server.HtmlEncode(r.Text);
加了个判断:
if (!(neirong=="")) { 如果留言内容不为空,允许提交至数据库 }

但只要在TextBox里输入回车、空格...也提交成功了,用(neirong=="")无法判断出~

请教:应该怎么补充代码?
让只有回车和空格的输入,不会被提交?

...全文
132 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ztx998 2004-04-19
  • 打赏
  • 举报
回复
up
曲滨_銘龘鶽 2004-04-18
  • 打赏
  • 举报
回复
Trim("\r\n") 可以写一起。
曲滨_銘龘鶽 2004-04-18
  • 打赏
  • 举报
回复
Trim()//去空格
Trim("\r")
Trim("\n")
//去换行回车
Trim(" ")//去全角字符空格.
潜水员2099 2004-04-18
  • 打赏
  • 举报
回复
后台直接用this.r.Text.ToString().Trim()是否等于""就可以判断了,javascript判断稍微复杂点,参看给你写的代码,测试通过

Milititextbox.aspx

<%@ Page language="c#" Codebehind="Milititextbox.aspx.cs" AutoEventWireup="false" Inherits="aspnettest.Milititextbox" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>Milititextbox</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<script language=javascript>
<!--
function checkinput()
{
var input = document.all("r").value;
if(input == "")
{
alert("空!");
}
else
{
var i;
var count = 0; //空格、回车字符的个数

for(i=0; i<input.length; i++)
{
var temp = input.charCodeAt(i);//input[i];
// alert(temp);
if(temp == 13)
{//回车
count++;
}
else if(temp == 32)
{//空格
count++;
}
else if(temp == 10)
{//ASCII码的'\n'
count++;
}
}

if(input.length == count)
{
alert('输入的都是空格和回车!');
}
else
{
alert(input);
}
}
}
//-->
</script>

</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:TextBox id="r" style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 8px" runat="server"
TextMode="MultiLine" Height="112px" Width="224px"></asp:TextBox>
<asp:Button id="Button1" style="Z-INDEX: 102; LEFT: 296px; POSITION: absolute; TOP: 48px" runat="server"
Text="提交看看"></asp:Button>
<INPUT id="checkit" style="Z-INDEX: 103; LEFT: 432px; POSITION: absolute; TOP: 48px" type="button"
value="JS脚本验证" onclick="checkinput();">
</form>
</body>
</HTML>

Milititextbox.aspx.cs

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace aspnettest
{
/// <summary>
/// Milititextbox 的摘要说明。
/// </summary>
public class Milititextbox : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox r;
protected System.Web.UI.WebControls.Button Button1;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void Button1_Click(object sender, System.EventArgs e)
{
if(this.r.Text.ToString().Trim() == "")
{
this.Page.RegisterStartupScript("kong","<script>alert('空!');</script>");
}
else
{
this.Page.RegisterStartupScript("aa","<script>alert('内容为:"+ this.r.Text.ToString().Trim() +"!');</script>");
}
}
}
}



xaodoudou 2004-04-18
  • 打赏
  • 举报
回复
还是在客户端用正则表达式好
erictang2003 2004-04-18
  • 打赏
  • 举报
回复
System.Text.RegularExpressions.Regex rx = new System.Text.RegularExpressions.Regex( @"\s" );
string tmp = textBox.Text;//去掉两头空格;
if( tmp != null && tmp.Length > 0 && !rx.IsMatch( tmp ) ){
//提交数据库;
}
i169net 2004-04-18
  • 打赏
  • 举报
回复
用长度 length 看看是不是为0

在多行文本框里输入空格键,会被转化成 <br> ,所以长度不会为0的............


i169net 2004-04-18
  • 打赏
  • 举报
回复
按您说的,先定义:
System.Text.RegularExpressions.Regex rx = new System.Text.RegularExpressions.Regex( @"\s" );

在判断:
if (!(rx.IsMatch( textBox.Text.Trim())) { 允许提交至数据库 }

但这样好象不行啊,甚至textBox.Text为空的时候也允许提交了...

页面——————
http://chs.gotdotnet.com/quickstart/aspplus/doc/webvalidation.aspx
里面说到了正则表达式,但我不知道应该怎么写?

大虾们,帮帮小弟啊.........................

iwish100000 2004-04-18
  • 打赏
  • 举报
回复
用长度 length 看看是不是为0
erictang2003 2004-04-18
  • 打赏
  • 举报
回复
服务器端:
System.Text.RegularExpressions.Regex rx = new System.Text.RegularExpressions.Regex( @"\s" );//匹配任何空白字符,包括空格、制表符、换页符等等;

if( rx.IsMatch( textBox.Text.Trim() ) ){
Response.Write( "请写点什么" );
return;
}

也可以用ASP.NET 的 System.Web.UI.WebControls.RequiredFieldValidator 具体看
http://chs.gotdotnet.com/quickstart/aspplus/doc/webvalidation.aspx
ztx998 2004-04-18
  • 打赏
  • 举报
回复
空格好判断,用trim()去掉空格后再判断TextBox里的内容是不是为空

至于回车吗?再想想
代码下载链接: https://pan.quark.cn/s/cf0000dae7ac 在.NET Framework平台中,`TreeView`组件是一种普遍应用的数据展示工具,主要功能是呈现层级化数据,例如文件系统布局、组织架构图等。本文将深入阐述在C#环境下如何运用递归方法为`TreeView`组件配置子节点,尤其是在管理文件夹层次结构的应用场景中。递归是一种高效的编程策略,其特点在于函数能够自我调用以完成特定任务,这种技术特别适用于处理具有层级关联的数据集合。为了有效运用`TreeView`组件,我们首先需要明确其核心构成单元:`TreeNode`。`TreeNode`是`TreeView`中的一个基本单元,它可以承载子节点,从而构建出树状结构。为了在`TreeView`中准确反映文件夹结构,每一个`TreeNode`通常映射为一个文件夹,而其下属的子节点则对应该文件夹内的子文件夹或文件。现在我们聚焦于核心内容,探讨如何通过递归方式实现子节点的添加。1. **构建基础框架** 我们需要设计一个类来描述文件或文件夹,该类应包含名称、路径等基本属性。例如: ```csharp public class FileSystemItem { public string Name { get; set; } public string Path { get; set; } // 其他属性如IsDirectory等 } ```2. **采集文件系统数据** 借助`System.IO`命名空间中的`DirectoryInfo`和`FileInfo`类,对目标目录进行遍历,以获取所有文件和子文件夹的信息。这里可以利用`GetDirectories()`和`GetFiles...
内容概要:本文系统阐述了Java微服务架构与TypeScript全栈工程化的实战方法,涵盖从单体应用拆分到分布式系统治理的完整技术链条。在Java微服务部分,基于Spring Boot与Spring Cloud生态,深入讲解领域驱动设计(DDD)、服务注册与发现(如Nacos、Eureka)、配置中心、API网关(Spring Cloud Gateway)、声明式调用(Feign)、负载均衡、服务熔断降级(Resilience4j/Hystrix)、消息队列异步解耦(Kafka/RabbitMQ)以及分布式事务(如Seata)等核心技术。数据层强调数据库自治原则,并结合Redis提升性能。前端部分聚焦TypeScript类型系统,通过静态类型检查增强代码可靠性,支持泛型、联合类型、映射类型等高级特性,实现前后端接口模型统一。全栈协作采用React/Vue/Angular框架,结合Axios通信与Swagger接口文档标准化。工程化层面引入Docker、Kubernetes实现容器化部署,配合Jenkins或GitHub Actions完成CI/CD自动化流程,并通过ELK实现日志追踪。典型应用场景包括电商、订单管理等系统,实现高内聚、低耦合、可扩展的分布式架构。; 适合人群:具备一定Java与前端基础,从事中高级后端开发、全栈开发或系统架构工作的技术人员,尤其适合1-5年经验并希望掌握微服务与全栈工程化实践的研发人员。; 使用场景及目标:①掌握微服务拆分与Spring Cloud微服务体系建设;②理解服务治理、异步通信、分布式事务等关键问题的解决方案;③构建类型安全的全栈项目,提升前后端协作效率与系统稳定性;④实现微服务的容器化部署与持续交付。; 阅读建议:建议结合实际项目边学边练,重点关注架构设计思想与技术选型背后的权衡,同时动手搭建完整微服务链路与前端类型系统,深入理解各组件集成方式与最佳实践。

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧