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”。