Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC-如何从视图中调用控制器方法以重定向到多个其他视图?_C#_Asp.net Mvc_Asp.net Core_Redirect - Fatal编程技术网

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

C# ASP.NET MVC-如何从视图中调用控制器方法以重定向到多个其他视图?,c#,asp.net-mvc,asp.net-core,redirect,C#,Asp.net Mvc,Asp.net Core,Redirect,我试图在导航栏中添加一个链接,根据用户的帐户类型将其重定向到不同的网页。我在做这件事时遇到了一些问题,需要一些帮助 我正在调用的控制器代码如下所示: public IActionResult Attendance(char accountType) { if (accountType.Equals("m") || accountType.Equals("a")) { return RedirectToAction(&

我试图在导航栏中添加一个链接,根据用户的帐户类型将其重定向到不同的网页。我在做这件事时遇到了一些问题,需要一些帮助

我正在调用的控制器代码如下所示:

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();
}
public IActionResult Attendance(string accountType) => 
    RedirectToAction(
        accountType.Equals("m") || 
        accountType.Equals("a") 
            ? nameof(FacultyAttendance)
            : nameof(StudentAttendance));
以下是调用控制器方法的步骤,我在视图文件中有以下代码片段:

这给了我以下错误:

错误的请求-无效的URL

HTTP错误400。请求URL无效

我还尝试通过删除
来执行以下操作

如果我这样做,我只会得到一个空白网页

我的第一个问题是,在视图文件中,我应该使用什么样式来调用这个方法。这些是正确的,还是我应该完全使用其他东西?问题可能在于我设置控制器代码的方式

任何帮助都将不胜感激,因为我是ASP.NET MVC框架的新手

编辑:我找到的解决方案与我最初发布的有点不同。我在视图中使用了此标记,并使其正常工作:


用于改进代码,因为我管理了一些变量,这可能是问题的一部分。

accountType是一个字符,但您正在传递一个字符串:

new {accountType = "m"}
将控制器更改为accountType采用字符串而不是字符

public IActionResult Attendance(string accountType)
另外,我会这样写:

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();
}
public IActionResult Attendance(string accountType) => 
    RedirectToAction(
        accountType.Equals("m") || 
        accountType.Equals("a") 
            ? nameof(FacultyAttendance)
            : nameof(StudentAttendance));

accountType是一个字符,但您正在传递一个字符串:

new {accountType = "m"}
将控制器更改为accountType采用字符串而不是字符

public IActionResult Attendance(string accountType)
另外,我会这样写:

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();
}
public IActionResult Attendance(string accountType) => 
    RedirectToAction(
        accountType.Equals("m") || 
        accountType.Equals("a") 
            ? nameof(FacultyAttendance)
            : nameof(StudentAttendance));

很好地捕捉到了字符串vs char。我将其更新为正确的数据类型。感谢您提供了另一种设置比较的方法,我想我可以使用它。然而,这两个改变都没有解决我的问题。单击调用该方法的链接仍然会得到HTTP错误400代码。它应该是“Home”而不是“HomeController”。字符串vs char的捕捉很好。我将其更新为正确的数据类型。感谢您提供了另一种设置比较的方法,我想我可以使用它。然而,这两个改变都没有解决我的问题。单击调用该方法的链接仍然会得到HTTP错误400代码。它应该是“Home”而不是“HomeController”。