单击搜索按钮时,空文本字段仍会填充数据。

时间:2012-09-25 13:40:46

标签: c# asp.net-mvc-3 html5

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 HomeController : Controller
{
    public ActionResult Index()
    {
        ViewBag.Message = "Welcome to ASP.NET MVC!";

        return View();
    }

    public ActionResult About()
    {
        return View();
    }

    public ActionResult Search()
    {
        string userId = Request["UserId"];

        bool view = false;

        if (Request["UserId"] == null)
        {
            view = true;
        }
        if (!view)
        {

            AAlexUsers.Models.SearchClass searchClass = new Models.SearchClass();
            {
                searchClass.lastFourdigits = "2222";
                searchClass.userId = userId;
                searchClass.email = "diaz@gmail.com";

                string lastFourdigits = searchClass.lastFourdigits;
                string userIdd = searchClass.userId;
                string email = searchClass.email;

                ViewBag.searchClass = searchClass;
                ViewBag.lastFourdigits = lastFourdigits;
                ViewBag.userId = userIdd;
                ViewBag.email = email;
            }
        }
        return View();
    }
}

模型

public class SearchClass
{
    public string userId { get; set; }
    public string email { get; set; }
    public string lastFourdigits { get; set; }

    public SearchClass()
    {
        userId = "";
        email = "";
        lastFourdigits = "";
    }
}

2 个答案:

答案 0 :(得分:1)

更改此行...

if (Request["UserId"] == null)

......对此...

if (string.IsNullOrEmpty(userId))

答案 1 :(得分:1)

您正在检查Request["UserId"]是否为空,但它永远不会为空,因为即使在您的模型中,您也默认将其值定义为空字符串。

编辑: 好的,迈克更快,但这解释了为什么你需要使用IsNullOrEmpty:)

关于数字健全性检查:

string Str = Request["UserId"];
double Num;
bool isNum = double.TryParse(Str, out Num);
如果您的字符串不是数字,

isNum将为false。 我没有任何c#开发IDE,但我检查了规格,这应该可行。