我定义主页视图,如
F_NAME C_NAME COUNT(GRADE) G
-------------------- ---------- ------------ -
CORY INSS300 4 B
CORY INSS300 4 C
CORY INSS421 1 A
CORY INSS421 1 C
CORY INSS421 1 D
DWIGHT INSS300 2 B
DWIGHT INSS300 2 C
KEEN FIN300 1 A
KEEN FIN300 1 B
KEEN INSS300 2 B
KEEN INSS300 2 C
KEEN INSS422 3 C
和登录控制器,如
<body>
<div>
<h1>Home</h1>
@Html.RouteLink("R1", "first", new { user="R1"})
@Html.RouteLink("R2", "second", new { company = "R2" })
</div>
</body>
RouteConfig
public class LoginController : Controller
{
// GET: Login
[Route("{user}", Name = "first")]
public ActionResult Index(string user)
{
return View();
}
[Route("{company}", Name = "second")]
public ActionResult Index2(string company)
{
return View();
}
}
我想在主页 R1 和 R2 上点击它分别路由到正确的操作结果Index和Index2。
但是它会产生波纹误差
以下操作方法之间的当前请求不明确: 类型上的System.Web.Mvc.ActionResult索引(System.String) MVCTest.Controllers.LoginController System.Web.Mvc.ActionResult MVCTest.Controllers.LoginController类型的Index2(System.String)
我不知道为什么会这样。
答案 0 :(得分:1)
问题:因为您只在路线中指定了{params}
,所以请求将发送到www.example.con/params
并且程序混淆因为您对此网址有 2个操作,而表示错误的原因。
www.example.con/matrixwebtech // Login/Index/matrixwebtech or Login/Index2/matrixwebtech?
www.example.con/stackoverflow // Login/Index/stackoverflowor Login/Index2/stackoverflow?
解决方案:如您所见,这两条路线没有区别,我们必须制作一条。
要解决,您必须使路线明确name/{params}
{params}
。
public class LoginController : Controller
{
[Route("{user}", Name = "first")]
public ActionResult Index(string user)
{
return View();
}
[Route("company/{company}", Name = "second")]
public ActionResult Index2(string company)
{
return View();
}
}
现在我们将使用 no confussion
来访问此路线www.example.con/matrixwebtech // /Login/Index/matrixwebtech
www.example.con/company/stackoverflow // /Login/Index2/stackoverflow
注意:您可以找到有关Route
here.
答案 1 :(得分:1)
不使用 {user} {company} ,而是使用用户和公司
示例:
PortletRequest