-1

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 = "";
    }
}
4

2 回答 2

1

改变这一行...

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

……到这……

if (string.IsNullOrEmpty(userId))
于 2012-09-25T13:44:22.747 回答
1

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

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

关于数字完整性检查:

string Str = Request["UserId"];
double Num;
bool isNum = double.TryParse(Str, out Num);

isNum如果您的字符串不是数字,则为假。我没有任何 c# 开发 IDE,但我检查了规范,这应该可以工作。

于 2012-09-25T13:46:13.573 回答