![](/img/trans.png)
[英]How do I call a method that returns a Task<T> From an ASP.Net MVC4 Controller Method?
[英]ASP.NET MVC - How do I Call a Controller Method from within a View to Redirect to Multiple Other Views?
我试图在我的导航栏中添加一个链接,根据用户的帐户类型将用户重定向到不同的网页。 我在执行此操作时遇到问题,可以使用一些帮助。
我调用的 Controller 代码如下所示:
public IActionResult Attendance(char accountType)
{
if (accountType.Equals("m") || accountType.Equals("a"))
{
return RedirectToAction("FacultyAttendance");
}
else
{
return RedirectToAction("StudentAttendance");
}
}
public IActionResult StudentAttendance()
{
// More functionality will be added later
return View();
}
public IActionResult FacultyAttendance()
{
// More functionality will be added later
return View();
}
按照这个调用 Controller 方法的答案,我在视图文件中有这个代码片段:
<a href="<%: @Url.Action("Attendance", "HomeController", new {accountType = "m"}) %>">Attendance</a>
这给了我以下错误:
错误请求 - 无效的 URL
HTTP 错误 400。请求 URL 无效。
我还尝试通过删除<%:
和%>
来遵循这个答案。
<a href="@Url.Action("Attendance", "HomeController", new {accountType = "m"})">Attendance</a>
如果我这样做,我只会得到空白网页。
我的第一个问题在于视图文件中的这个方法调用应该使用哪种样式。 这些中的任何一个都是正确的,还是我应该完全使用其他东西? 问题可能与我设置 Controller 代码的方式有关吗?
任何帮助将不胜感激,因为我是 ASP.NET 的 MVC 框架的新手。
编辑:我找到的解决方案与我最初发布的有点不同。 我在我的视图中使用了这个标签并让它工作:
<a asp-controller="Home" asp-action="Attendance" asp-route-accountType='s'>Attendance</a>
我还遵循了 ThisGuy 改进代码的建议,因为我对一些变量管理不善,这可能是问题的一部分。
accountType 是一个字符,但您传递的是一个字符串:
new {accountType = "m"}
将 Controller 更改为使用字符串而不是 char 作为 accountType。
public IActionResult Attendance(string accountType)
另外,我会这样写:
public IActionResult Attendance(string accountType) =>
RedirectToAction(
accountType.Equals("m") ||
accountType.Equals("a")
? nameof(FacultyAttendance)
: nameof(StudentAttendance));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.