首页 > 解决方案 > 控制器未从 MVC 上的视图(实现搜索功能)接收值

问题描述

我正在尝试制作具有搜索功能的页面。当您第一次进入该页面时,您所拥有的只是一个搜索栏。当您在搜索栏中输入内容并单击“提交”或“搜索”按钮时,我希望将搜索框中的值作为字符串提交给控制器。然后,此值可用于将模型返回到页面。这是我到目前为止所拥有的:

搜索.cshtml

@{
    ViewBag.Title = "Search";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
@ViewBag.PageTitle
<h1>Search All Issues</h1>
<form asp-controller="Report" asp-action="Search" method="get">
<input name="searchstr" id="Search" />
<input type="submit" value="Submit" />
</form>

报告控制器.cs

    [HttpGet]
    public ActionResult Search(string test)
    {
        ViewBag.PageTitle = test;
        var report = _context.Reports.ToList();
        return View(report);
    }

我在这里做错了什么?现在,如果我能让 ViewBag.PageTitle 出现在页面上,那就太好了。如果我能做到这一点,那么我可以按照我想要的方式返回报表模型。

另外,还有几个问题。我在堆栈溢出中看到的一些内容建议在控制器中执行 Post。如果我这样做,页面就会出错。为什么需要 get 呢?直觉上,使用 Post 对我来说更有意义......

标签: asp.netasp.net-mvcasp.net-mvc-5

解决方案


原来我非常接近;斯蒂芬·穆克有正确的答案。我只需要更改我的输入名称或参数名称。

我犯了这个错误,因为我从 C++/C 的角度考虑这个参数名称可能无关紧要。不过,我现在看到,对于 ASP.NET MVC,您需要让输入名称与参数名称匹配。

谢谢您的帮助!


推荐阅读