簡體   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