【发布时间】:2020-06-27 13:46:52
【问题描述】:
我正在开发 asp.net mvc 应用程序,我面临的问题是,当用户单击其电子邮件中的确认您的帐户链接时,操作方法“Account/ConfirmEmail”采用两个参数字符串 userId 和 string代码未命中,我得到一个 404“找不到资源”。
我怀疑字符串参数中有一些东西阻止了应用程序找出路由。
public async Task<ActionResult> ConfirmEmail(string userId, string code)
{
if (userId == null || code == null)
{
return View("Error");
}
var result = await UserManager.ConfirmEmailAsync(userId, code);
return View(result.Succeeded ? "ConfirmEmail" : "Error");
}
我尝试过但没有任何运气的是定义路线并将属性分配给相同的操作方法。
routes.MapRoute(
name: "emailConfirmation",
url: "{controller}/{action}/{userId}/{code}",
defaults: new { controller = "Account", action = "ConfirmEmail", userId = "", code="" },
namespaces: new string[] { "SaaS.Controllers" }
);
和属性
[Route("emailConfirmation")]
[AllowAnonymous]
public async Task<ActionResult> ConfirmEmail(string userId, string code)
{
}
如果我删除 userId 和 code 参数,则该操作会被两个空字符串命中。有什么想法吗? 谢谢
【问题讨论】:
-
您希望它如何工作?您已经定义了匹配
ConfirmEmail/{userId}/{code}的路由,同时您正在调用confirmEmail?userId={userId}&code={code} -
感谢您的回复,如果没有属性路由,它应该点击 confirmEmail?userId=54trtydy&code=gfhgjg ,但它没有?
标签: c# asp.net-mvc-5.2