-1

ASPXエンジン

検索ボタン付きのWebフォームがあります。ユーザーがユーザー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

nullかどうかをチェックRequest["UserId"]していますが、モデルでもデフォルトで値を空の文字列として定義しているため、nullになることはありません。

編集:わかりました、マイクはより速かったです、しかしこれはあなたが使用する必要がある理由を説明しますIsNullOrEmpty:)

数値の健全性チェックについて:

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

isNum文字列が数値でない場合はfalseになります。私はc#開発IDEを持っていませんが、仕様を確認しました。これで動作するはずです。

于 2012-09-25T13:46:13.573 に答える