繁体   English   中英

在ASP.NET MVC应用程序中传递null而不是字符串的操作

[英]Action passing null instead of string in asp.net mvc application

我绝对坚持不懈,我创建了一个动作,使用Identity Framework将新的Identity Role添加到数据库中。 不幸的是,无论何时执行,它都会返回失败信息,并且在我插入断点之后,我确定我将传递null作为newRole的值,而不是按预期的方式传递superadmin。

以下是我使用的网址,与我使用的网址完全相同:

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

那么应该你的行动的参数重命名为id ,或者明确地说,您使用newRole通过写变量addrole?newRole=superadmin

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM