我正在使用Razorview和实体框架,并试图实现以下功能:我有一个下拉列表(id = ColumnName),它具有列名称列表和textbox(id = SearchValue)用于从表中搜索的值。点击一个按钮时,我从数据库中检索相关数据(列名称为'ColumnName'且value ='SearchValue'的记录)。这工作正常,但当我得到相关数据时,我失去了'SearchValue'和'ColumnName'选择。我不知道如何保存所选择的值并输入,只需取回表格中的相关数据即可。我的代码如下:基于单独列搜索的显示表:保留搜索字段和值
HTML:
<select id='mySelector' name="ColumnName">
<option value="">Please Select</option>
<option value='Country'>Country</option>
<option value='Title'>Title</option>
<option value='State'>State</option>
</select>
<input type="text" id="cs" name="SearchValue">
<input type="button" value="Search" onclick="location.href='@Url.Action("FilterByColumn", "CountryController")?SearchValue=' + document.getElementById('cs').value + '&ColumnName=' +document.getElementById('mySelector').value" />
<table id='myTable'>
// values
</table>
CountryController:
public ActionResult FilterByColumn(String ColumnName, String SearchValue)
{
if (!String.IsNullOrEmpty(SearchValue))
{
List<Country> result = new List<Country>();
result = db.Countries.ToList();
result = db.Countries.Where(ColumnName + ".Contains" + "(\"" + SearchValue.ToLower() + "\")").ToList();
return View(result);
}
return RedirectToAction("Index");
}
注:我有其他的方法,如在该控制器创建,编辑。
我做的方式是使用jQuery插入搜索值到一个隐藏字段,然后确保我传递回用ViewBag的观点。这将信息保存在URL之外,这可能会在稍后将数据库暴露给注入。 – Danimal
此外,您可以使用ajax仅刷新要刷新的数据,并保留所有先前的页面数据。 – Danimal
@Danimal:你能用一个例子来解释吗? – user7221204