C# 单击“搜索”按钮时,空文本字段仍然填充数据。

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="

ASPX引擎

我有一个带有搜索按钮的网络表单。用户输入用户Id并假设用数据填充表

如果用户输入的不是数字,则会出现一条消息,只显示数字。
如果用户将字段留空并点击搜索按钮。未找到要显示的结果/类

我遇到的问题是,无论我在文本字段中输入什么,数据仍然填充表格

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,no
jQuery
是第三方库。这似乎是一个ASP.NETMVC项目,所以它可能已经存在了。查看您的
脚本
文件夹。但是,如果您没有看到它,请转到并获取最新版本,将其放置在您的解决方案中的某个位置,并在您的网页中添加对它的
链接
引用。但也要记住的一点是,在他的代码中,他没有读取
搜索类
对象中的值,他正在读取请求对象中发布的值。有没有办法只允许输入数字?