我有以下两个表:
Table1
___________
ID
Name
Company
Industry
Rank
Key - guid
和
Table2
_____________
Key - guid
FieldValue
StartDate
EndDate
我使用的是 MVC 模式,而不是常规的 Web 表单。我为每个模型类和单独的 DBContext 类创建了 2 个单独的模型类。
最初当页面加载时,我在页面上显示 Table1 中的所有数据。我想在页面顶部添加一个文本框,当用户输入一个值并按回车键时,我想根据用户输入的值过滤页面上表格中的数据:
SELECT ID, Name, Company,Industry, Rank
FROM Table1 INNER JOIN Table2 ON Table1.Key=Table2.Key
WHERE FieldValue=TextBox1.Text
我已经有了在页面上正常显示 Table1 数据的代码,但我需要帮助添加基于文本框值的过滤器。谁能指出我正确的方向?
这是我在 View 中的代码:
<input type="text" id="TextBox1" />
<h2>Records</h2>
<table style="border: 1px solid black;">
<tr>
<th>ID</th>
<th>Name</th>
<th>Company</th>
<th>Industry</th>
<th>Rank</th>
</tr>
@foreach (ProjectName.Models.Records item in Model)
{
<tr style="border: 1px solid black;">
<td>@item.ID</td>
<td>@item.Name</td>
<td>@item.Company</td>
<td>@item.Industry</td>
<td>@item.Rank</td>
</tr>
}
</table>
这是更新的 View 代码:
<div>
@using (Html.BeginForm())
{
<input type="text" id="TextBox1" />
<input type="submit" name="submit" />
}
<h2>Records</h2>
<table style="border: 1px solid black;">
<tr>
<th>ID</th>
<th>Name</th>
<th>Company</th>
<th>Industry</th>
<th>Rank</th>
</tr>
@foreach (ProjectName.Models.Records item in Model)
{
<tr style="border: 1px solid black;">
<td>@item.ID</td>
<td>@item.Name</td>
<td>@item.Company</td>
<td>@item.Industry</td>
<td>@item.Rank</td>
</tr>
}
</table>
</div>
附言亲爱的编辑们,拜托拜托拜托了,停止从标题中编辑单词 MVC——否则人们会认为它是 Web Forms 模式而不是 MVC。所以请漂亮请停止编辑它,你没有帮助,只会让事情变得困难。提前非常感谢您,我的感激之情溢于言表
最佳答案
即使您使用的是 MVC,您仍然需要 <form>
将过滤器值提交给 Controller 方法。
这是 MVC 表单中的文本框:
@using (Html.BeginForm())
{
<input type="text" name="TextBox1" />
<input type="submit" name="submit" />
}
这是呈现为 HTML <form>
标签。你的 Controller 看起来像这样:
public ActionResult Index(string TextBox1)
{
// You don't say how you're interacting with the database,
// but you need to check the `TextBox1` parameter for null,
// and use it in your query if it's not - simplified:
if(TextBox1 != null)
{
// do qry with parameter
}
else
{
// do qry without parameter
}
...
有几种方法可以完成我上面写的事情,但这是一个简单的版本,不需要修改您的 ViewModel
(主要是不知道长啥样!)
关于c# - 根据文本框值向页面添加过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32950868/