在 mvc 应用程序中传递 null 而不是字符串 asp.net 操作



我完全坚持这一点,我已经创建了一个操作,使用身份框架向我的数据库添加新的身份角色。不幸的是,每当执行它时,它都会返回它失败,并且在我插入断点后,我确定我传递 null 作为newRole的值,而不是预期的超级管理员。

以下是我正在使用的URL,与我正在使用的完全相同:

https://localhost:44344/account/addrole/superadmin

这是相应的操作:

[Authorize(Roles = RoleNames.CanAddUsers)]
public ActionResult AddRole(string newRole)
{
var roleStore = new RoleStore<IdentityRole>(new ApplicationDbContext());
var roleManager = new RoleManager<IdentityRole>(roleStore);
var result = roleManager.Create(new IdentityRole(newRole));
return result.Succeeded 
? Content(newRole + " added to database.") 
: Content("Failed to add " + newRole + ".");
}

现在我已经检查并仔细检查了我登录的用户,同时测试它具有角色CanAddUsers,我没有被重定向到登录,而只是收到Failed to add .

为了确认,以下是我的路由,我找不到任何其他表明我的代码可能以不同的方式路由的内容。

routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

我敢肯定,在这一点上,这可能是一个非常明显的错误,但我找不到它!

  • asp.net 标识版本:2.2.1
  • asp.net MVC 版本:5.2.3
  • 实体框架 6.3.1

如果您只想使用 MapRoute,那么您应该知道将使用可选参数的名称(在您的情况下id)。

然后,您应该将 Action 的参数重命名为id,或者通过编写addrole?newRole=superadmin来明确说明您使用newRole变量。

否则,正如其他人指出的那样,您可能更喜欢使用 POST 而不是 GET。

相关内容

  • 没有找到相关文章

最新更新