0

所以我得到了一个有搜索表单的页面,当用户搜索一个值时,如果数据库上没有记录,则表单返回空,但如果有记录,表单将填充数据。

我在想的是这个

    var db = Database.Open("myDataBase");
    var selectCommand = "SELECT * FROM exportClient";
    var searchTerm = "";

    if(!Request.QueryString["searchField"].IsEmpty() ) {
    selectCommand = "SELECT * FROM exportClient WHERE clientAccount = @0";
    searchTerm = Request.QueryString["searchField"];
    }

    if(IsPost){
     var selectedData = db.Query(selectCommand, searchTerm);
    }

接着:

<body>
  <div class="col_12">
    <form method="get">
        <label>search</label><input type="text" class="col_3" name="searchField" />
        <button type="submit" class="button red" value="search">search</button>
    </form>
</div>


    @if(!Request.QueryString["searchField"].IsEmpty() ){
            foreach(var row in db.Query(selectCommand, searchTerm)) {
              <div class="col_12 box">
                 <form method="post">
                       // HERE IS THE FORM POPULATED
                  </form>
              </div>
             }
    } else { 
              <div class="col_12 box">
                 <form method="post">
                       // HERE IS THE FORM NOT POPULATED
                  </form>
              </div>
      }
</body>

但是发生的情况是,当我进入页面时,始终显示未填充的表单,并且我需要用户在进入页面时看到的唯一内容是进行搜索的输入字段。

我究竟做错了什么 ?

4

2 回答 2

1

我可以在您的代码中看到许多潜在问题,希望您可以将它们放在一起以实现您想要的:

  1. 正如 Selva 指出的那样,您缺少action表单上的属性。
  2. 在你对它做任何事情之前,你在你的块中创建的selectedData变量IsPost()超出了范围。也许您没有包含所有代码,所以如果它与问题无关,请忽略它。
  3. 要回答主要问题:如果您不希望在用户尚未执行搜索时出现空表单,那么您肯定只需else要从 HTML 中完全删除块 - 包括空表单吗?

希望有帮助。

于 2014-02-28T13:01:52.757 回答
1

我不确定是否了解您的目标,但在我看来,您的主要问题是检测查询字符串是否存在。

我认为你的代码应该是这样的

@if(Request.QueryString.HasKeys())
{
  if(!Request.QueryString["searchField"].IsEmpty() ){
    <p>searchField has value</p>
  } else {
    <p>searchField hasn't value</p>
  }
}
于 2014-02-28T14:20:11.280 回答