C# 单击“搜索”按钮时,空文本字段仍然填充数据。
ASPX引擎 我有一个带有搜索按钮的网络表单。用户输入用户Id并假设用数据填充表 如果用户输入的不是数字,则会出现一条消息,只显示数字。C# 单击“搜索”按钮时,空文本字段仍然填充数据。,c#,asp.net-mvc-3,html,C#,Asp.net Mvc 3,Html,ASPX引擎 我有一个带有搜索按钮的网络表单。用户输入用户Id并假设用数据填充表 如果用户输入的不是数字,则会出现一条消息,只显示数字。 如果用户将字段留空并点击搜索按钮。未找到要显示的结果/类 我遇到的问题是,无论我在文本字段中输入什么,数据仍然填充表格 html <div align="center"> <form id="searchUser" method="post" action="Search"> <table align="
如果用户将字段留空并点击搜索按钮。未找到要显示的结果/类 我遇到的问题是,无论我在文本字段中输入什么,数据仍然填充表格 html
<div align="center">
<form id="searchUser" method="post" action="Search">
<table align="center">
<tr>
<td class="label">
Enter ID:
</td>
<td>
<input type="text" name="UserId" id="UserId" value="<%=(string)(ViewBag.userid)%>" />
</td>
</tr>
<tr>
<td>
<button class="searchButton" id="searchButton">Search</button>
</td>
</tr>
</table>
</form>
</div>
<hr />
<% if (ViewBag.searchClass !=null)
{ %>
<h2>Search Resuls</h2>
<br />
<%AAlexUsers.Models.SearchClass searchClassList= ViewBag.searchClass;%>
<table>
<tr>
<td>
UserID:
</td>
<td class="content">
<%=searchClassList.userId%>
</td>
</tr>
<tr>
<td>
Email:
</td>
<td class="content">
<%=searchClassList.email%>
</td>
</tr>
<tr>
<td>
Last Four Digits:
</td>
<td class="content">
<%=searchClassList.lastFourdigits%>
</td>
</tr>
</table>
<%} else %>
<%{ %>
<h2>No Class found.</h2>
<%} %>
public class SearchClass
{
public string userId { get; set; }
public string email { get; set; }
public string lastFourdigits { get; set; }
public SearchClass()
{
userId = "";
email = "";
lastFourdigits = "";
}
}
型号
<div align="center">
<form id="searchUser" method="post" action="Search">
<table align="center">
<tr>
<td class="label">
Enter ID:
</td>
<td>
<input type="text" name="UserId" id="UserId" value="<%=(string)(ViewBag.userid)%>" />
</td>
</tr>
<tr>
<td>
<button class="searchButton" id="searchButton">Search</button>
</td>
</tr>
</table>
</form>
</div>
<hr />
<% if (ViewBag.searchClass !=null)
{ %>
<h2>Search Resuls</h2>
<br />
<%AAlexUsers.Models.SearchClass searchClassList= ViewBag.searchClass;%>
<table>
<tr>
<td>
UserID:
</td>
<td class="content">
<%=searchClassList.userId%>
</td>
</tr>
<tr>
<td>
Email:
</td>
<td class="content">
<%=searchClassList.email%>
</td>
</tr>
<tr>
<td>
Last Four Digits:
</td>
<td class="content">
<%=searchClassList.lastFourdigits%>
</td>
</tr>
</table>
<%} else %>
<%{ %>
<h2>No Class found.</h2>
<%} %>
public class SearchClass
{
public string userId { get; set; }
public string email { get; set; }
public string lastFourdigits { get; set; }
public SearchClass()
{
userId = "";
email = "";
lastFourdigits = "";
}
}
更改此行
if (Request["UserId"] == null)
。。。对此
if (string.IsNullOrEmpty(userId))
您正在检查
Request[“UserId”]
是否为null,但它永远不会为null,因为即使在您的模型中,您也会默认将其值定义为空字符串
编辑:
好的,Mike更快了,但这解释了为什么需要使用IsNullOrEmpty
:)
关于数字健全性检查:
string Str = Request["UserId"];
double Num;
bool isNum = double.TryParse(Str, out Num);
如果字符串不是数字,isNum
将为false。
我没有任何c#开发IDE,但我检查了规范,这应该可以工作。有没有办法只允许输入数字?@Yusuf,是的,请查看此帖子。请注意,如果它还不是您的解决方案的一部分,您需要下载
jQuery
。好的..我正在使用visual studio 2010。它应该已经随附了吗?@Yusuf,nojQuery
是第三方库。这似乎是一个ASP.NETMVC项目,所以它可能已经存在了。查看您的脚本
文件夹。但是,如果您没有看到它,请转到并获取最新版本,将其放置在您的解决方案中的某个位置,并在您的网页中添加对它的链接
引用。但也要记住的一点是,在他的代码中,他没有读取搜索类
对象中的值,他正在读取请求对象中发布的值。有没有办法只允许输入数字?