繁体   English   中英

ASP.NET MVC - 如何从视图中调用 Controller 方法以重定向到多个其他视图?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM