我可以調用此任務。我似乎無法理解返回的內容。更少使用它。我只是想要一個True或False,所以我可以保存一個角色或不。調用任務並返回True或False MVC 6
public ActionResult Create([FromServices]IServiceProvider serviceProvider,string roleName)
{
ModelState.Clear();
try
{
var doesit= DoesRoleExist(serviceProvider, roleName);
if (string.IsNullOrEmpty(roleName))
{
throw new Exception("Invalid Role Name: Cannot be empty and must be unique");
}
context.Roles.Add(new Microsoft.AspNet.Identity.EntityFramework.IdentityRole()
{
Name = roleName,
NormalizedName = roleName.ToUpper()
});
context.SaveChanges();
return RedirectToAction("Index");
}
catch
{
ModelState.AddModelError(string.Empty, string.Format("{0}", "Unable to Create Role. "));
return View();
}
}
我得到這個當我打破 「變種doesit = DoesRoleExist(的ServiceProvider,角色名)」
? doesit
編號= 2093,狀態= WaitingForActivation,方法= 「{NULL}」,結果= 「{尚未計算}」 AsyncState:空 CancellationPending:假 CreationOptions:無 異常:空 編號:2093 結果:假 狀態:WaitingForActivation
這裏的任務:
private async Task<bool> DoesRoleExist(IServiceProvider serviceProvider, string roleName)
{
bool result =false;
var RoleManager = serviceProvider.GetRequiredService<RoleManager<IdentityRole>>();
result = await RoleManager.RoleExistsAsync(roleName);
return result;
}
我t很有趣,但除了在ActionResult中放入If語句時遇到的「can not compare boolean using ===」,我還在上面的任務中看到「return result;」在「結果=等待RoleManager.RoleExistsAsync(roleName);」之後運行。去搞清楚。只是簡單的真或假是我所要求的和能夠比較布爾值來查看我是否想添加角色。
我想補充說我的context.Roles沒有「RoleExists」方法。 但是,由於某種原因,在異步任務中,我可以調用「.RoleExistsAsync」。