c# - 根据文本框值向页面添加过滤器

标签 c# asp.net-mvc entity-framework

我有以下两个表:

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/

相关文章:

c# - 领域驱动设计和聚合

c# - DbConnection.EnlistTransaction 有什么作用?

asp.net - 动态数据 - 创建友好的列名称?

c# - 在 C# 中将包含项目和值的字符串拆分为字典

c# - 绑定(bind)字典,报内存泄漏,如何修复?

c# - 查询拦截 - 处理诊断监听器

asp.net-mvc - MVC outputcache 不在服务器中缓存

c# - Json.net 反序列化返回一个空对象

jquery - 不使用模型的 ASP.NET MVC ajax 服务器端验证

c# - ASP.NET 身份 2.0 : How to rehash password