所以我得到了一个带有搜索表单的页面,当用户搜索一个值时,如果数据库中没有记录,表单返回空,但如果有记录,表单将填充数据。
我在想的是这个
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>
但是正在发生的事情是,当我进入页面时,未填充的表单总是显示,我需要用户在进入页面时看到的唯一内容是进行搜索的输入字段。
我做错了什么?
我不确定是否理解了您的目标,但在我看来,您的主要问题是检测查询字符串是否存在。
我认为你的代码应该是这样的
@if(Request.QueryString.HasKeys())
{
if(!Request.QueryString["searchField"].IsEmpty() ){
<p>searchField has value</p>
} else {
<p>searchField hasn't value</p>
}
}
我可以看到您的代码存在许多潜在问题,希望您可以将这些问题放在一起以实现您想要的:
- 正如Selva指出的那样,表单上缺少
action
属性。 - 您在
IsPost()
块中创建的selectedData
变量在对它执行任何操作之前会超出范围。也许你没有包含所有代码,所以如果它与问题无关,请忽略它。 - 回答主要问题:如果您不希望在用户尚未执行搜索时出现空表单,那么您当然只需要从 HTML 中完全删除
else
块(包括空表单)吗?
希望有帮助。