Как отправить строку через html в контроллер. ASP. NET MVC - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть метод, который экспортирует данные в Excel, который называется ExportCSV ().

Мне нужен метод, у которого есть некоторые дополнительные возможности: ExportCSV (строка searchString), где строка находится в строке поиска в Интернете. страница отправляется в этот метод, где я могу затем использовать его. Итак, мой вопрос, как я могу отправить строку в строке поиска в этот метод?

Соответствующий код ниже.

html предназначены для функции поиска, которая работает, но я не могу получить аналогичную функциональность для экспорта


<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 всегда пусто.

1 Ответ

0 голосов
/ 01 апреля 2020
<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 должен соответствовать параметру, который принимает MVC ActionResult, и, поскольку вы использовали тег привязки, вы просто перемещали людей по своему 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");
    }
...