C# 如何在controller-MVC中重载任务
我的控制器中有两个任务,它们执行两个非常不同的操作 第一个任务为我的搜索栏提供了功能—它在搜索字段中显示用户请求搜索的数据 第二个任务只是返回一个视图,该视图与问题无关 只有在调用控制器的“索引”任务时,搜索栏的功能才会起作用。文档没有解释为什么必须将搜索栏功能放在索引任务中,但是必须这样做,否则会出现异常 我的问题是,我的索引任务中已经有了代码——要有两个索引控制器,我该怎么做?我试着在控制器中直接重载它,但没有成功 以下是我目前的代码供参考:C# 如何在controller-MVC中重载任务,c#,asp.net-mvc,asp.net-core,asp.net-core-mvc,C#,Asp.net Mvc,Asp.net Core,Asp.net Core Mvc,我的控制器中有两个任务,它们执行两个非常不同的操作 第一个任务为我的搜索栏提供了功能—它在搜索字段中显示用户请求搜索的数据 第二个任务只是返回一个视图,该视图与问题无关 只有在调用控制器的“索引”任务时,搜索栏的功能才会起作用。文档没有解释为什么必须将搜索栏功能放在索引任务中,但是必须这样做,否则会出现异常 我的问题是,我的索引任务中已经有了代码——要有两个索引控制器,我该怎么做?我试着在控制器中直接重载它,但没有成功 以下是我目前的代码供参考: public async Task<IAc
public async Task<IActionResult> Index(string searchString)
{
var course = from m in _context.Course
select m;
if (!String.IsNullOrEmpty(searchString))
{
course = course.Where(s => s.CourseName.Contains(searchString));
}
return View(await course.ToListAsync());
}
// GET: Course
public async Task<IActionResult> Index()
{
return View(await _context.Course.ToListAsync());
}
公共异步任务索引(字符串搜索字符串)
{
var course=来自_context.course中的m
选择m;
如果(!String.IsNullOrEmpty(searchString))
{
course=course.Where(s=>s.CourseName.Contains(searchString));
}
返回视图(wait course.ToListAsync());
}
//得到:当然
公共异步任务索引()
{
返回视图(wait_context.Course.toListSync());
}
我的前端代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] - SEWebPage03</title>
<link rel="stylesheet" href="~/css/site.css" />
</head>
<body>
<header>
<div class="navbar-container">
<ul class="navbar-items">
<li class="nav-item">
<a class="nav-link" asp-area="" asp-controller="Home" asp-action="Index">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
</li>
<li class="nav-item">
<a class="nav-link" asp-area="" asp-controller="Course" asp-action="Index">Courses</a>
</li>
<li class="nav-item">
<a class="nav-link" asp-area="" asp-controller="Professor" asp-action="Index">Professors</a>
</li>
</ul>
</div>
<form asp-controller="Course" asp-action="Index">
<p>
<input type="text" name="SearchString">
<input type="submit" value="Search" />
</p>
</form>
</header>
<div class="container">
<main role="main" class="pb-3">
@RenderBody()
</main>
</div>
<footer class="border-top footer text-muted">
</footer>
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
@RenderSection("Scripts", required: false)
</body>
</html>
@ViewData[“标题”]-SEWebPage03
-
家
-
隐私
-
课程
-
教授
@RenderBody()
@RenderSection(“脚本”,必需:false)
当尝试将名称更改为返回视图的任务时,出现以下错误
(我将任务名称更改为测试):
InvalidOperationException:未找到视图“测试”。搜索了以下地点:
/Views/Course/Testing.cshtml/Views/Shared/Testing.cshtml
/页面/Shared/Testing.cshtml
您可以在表单中更改asp操作: 改变
<form asp-controller="Course" asp-action="Index">
<p>
<input type="text" name="SearchString">
<input type="submit" value="Search" />
</p>
</form>
public async Task<IActionResult> Index(string searchString)
{
var course = from m in _context.Course
select m;
if (!String.IsNullOrEmpty(searchString))
{
course = course.Where(s => s.CourseName.Contains(searchString));
}
return View(await course.ToListAsync());
}
到
然后,您需要更改您返回的ActionName和ViewName:
改变
<form asp-controller="Course" asp-action="Index">
<p>
<input type="text" name="SearchString">
<input type="submit" value="Search" />
</p>
</form>
public async Task<IActionResult> Index(string searchString)
{
var course = from m in _context.Course
select m;
if (!String.IsNullOrEmpty(searchString))
{
course = course.Where(s => s.CourseName.Contains(searchString));
}
return View(await course.ToListAsync());
}
公共异步任务索引(字符串搜索字符串)
{
var course=来自_context.course中的m
选择m;
如果(!String.IsNullOrEmpty(searchString))
{
course=course.Where(s=>s.CourseName.Contains(searchString));
}
返回视图(wait course.ToListAsync());
}
到
公共异步任务搜索(字符串搜索字符串)
{
var course=来自_context.course中的m
选择m;
如果(!String.IsNullOrEmpty(searchString))
{
course=course.Where(s=>s.CourseName.Contains(searchString));
}
返回视图(“索引”,等待course.ToListAsync());
}
如果您一定要在搜索栏中使用索引,为什么不在其他索引中使用其他方法?为什么你真的需要2个索引?你能发布前端代码吗?正如@nalnpir所说的,您不需要绑定到“index”,您可以创建一个名为“Search”的方法或其他方法,您可以重载控制器将HttpPost/HttpGet属性放入的方法it@Leo谢谢你的建议!我尝试在这两种方法上重命名方法-当我将负责搜索的方法重命名为“search”时会出错,当我重命名另一个返回视图的索引函数时也会出错。我对这一切都不熟悉,不太明白为什么会这样。是的,我会用前端代码更新我的帖子!另外,我更新了我的帖子,当我试图更改另一个只返回view@mjwills ? 是的,如果你阅读下面的评论,你会看到我用错误更新了我的帖子。很难在堆栈溢出注释中格式化代码。