【问题标题】:How do I send a string through html into a controller. ASP.NET MVC如何通过 html 将字符串发送到控制器。 ASP.NET MVC
【发布时间】:2020-07-13 17:19:05
【问题描述】:

我有一个将数据导出到 Excel 的方法,称为 ExportCSV()。

我想要一个具有一些附加功能的方法:ExportCSV(string searchString),其中网页搜索栏中的字符串被发送到此方法,然后我可以使用它。所以我的问题是,如何将搜索栏中的字符串发送到此方法中?

相关代码如下。

html 's 用于搜索功能,但我无法获得用于导出的类似功能


<input type="text" placeholder="Chem Name" name="cheminventory2String" value="@ViewData["Search"]" id="SearchString" />
<input type="submit" value="Search" class="btn btn-default" />

<a class="btn btn-default" asp-action="ExportCSV">Export Table</a>


这里是控制器


public FileContentResult ExportCSV(string searchString)
{
     var dataTable = from m in _context.ChemInventory2.Include(c => c.Chemical).Include(c => Location).Include(c => c.Order)
                     select m;

     *code for making and filling the csv to export*

     return File(export.ExportToBytes(), "text/csv", "Chemical Inventory.csv");
}

ExportCSV() 有效,但它会导出表中的所有内容。 我希望它只导出已搜索的内容。 在我尝试过的事情中,没有任何东西传递到方法中。 searchString 始终为空。

【问题讨论】:

    标签: html asp.net-mvc asp.net-core-mvc data-transfer


    【解决方案1】:
    <form method="GET" asp-action="ExportCSV">    
        <input type="text" placeholder="Chem Name" name="cheminventory2String" value="@ViewData["Search"]" id="SearchString" />
        <input type="submit" value="Search" class="btn btn-default" />
    
        <button type="submit" class="btn btn-default">Export Table</a>
    </form>
    

    上面 HTML 标记上的 name 属性需要与 MVC ActionResult 采用的参数匹配,并且由于您使用的是 Anchor 标记,因此您只是将人们导航到您的 URL,而无需任何参数。

    它应该被包裹在一个表单标签内,然后锚链接应该被一个提交按钮替换。

    然后您可以使用您的搜索字符串,如下所示:

    public FileContentResult ExportCSV(string cheminventory2String)
        {
             var dataTable = from m in _context.ChemInventory2.Include(c => c.Chemical).Include(c => Location).Include(c => c.Order)
                             where cheminventory2String == m.Chemical.Name select m;
    
             return File(export.ExportToBytes(), "text/csv", "Chemical Inventory.csv");
        }
    

    【讨论】:

    • 感谢您的意见。不幸的是,这似乎没有什么不同。我通过更改 ``` return File(export.ExportToBytes(), "text/csv", "Chemical Inventory.csv"); 对其进行了测试。 ``` to ``` return File(export.ExportToBytes(), "text/csv", cheminventory2Srig + "test.csv"); ``` 并且字符串仍然不存在。搜索功能在单独的方法中可能是相关的。 ExportCSV() 是它自己的方法。
    • 哦,抱歉,我错过了您在代码中使用锚标记。我已经更新了我的答案。
    • 将它包装在一个
      中已经阻止它完全调用该方法。两个 用于将显示的结果缩减为搜索内容的搜索功能。我相信,其中的 type="submit" 部分会转到搜索功能所在的控制器中的 Index 方法。现在将所有这些都包含在
      中,“导出表格”按钮的作用与“搜索”按钮完全相同。然后我尝试在
      中仅包装第一个
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 2020-03-21
    • 2016-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多