我可以调用此任务。我似乎无法理解返回的内容。更少使用它。我只想要一个对错,所以我可以保存一个角色。
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();
}
}
当我打破时,我得到了这个" var doesit = DoesRoleExist(serviceProvider,roleName)"
? doesit
Id = 2093,Status = WaitingForActivation,Method =" {null}",Result =" {Not yet computed}" AsyncState:null CancellationPending:false CreationOptions:无 例外:null Id: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;
}
这很有趣但除了&#34;不能比较布尔值===&#34;当我在ActionResult中放入一个If语句时,我遇到了这个问题,我也看到在上面的任务中,&#34;返回结果;&#34;运行AFTER&#34; result =等待RoleManager.RoleExistsAsync(roleName);&#34;。去搞清楚。我只要求一个简单的真或假,并且能够比较一个布尔值,看看我是否想要添加角色。
我想补充说我的context.Roles没有&#34; RoleExists&#34;方法。 但是,出于某种原因,在异步任务中我可以调用&#34; .RoleExistsAsync&#34;由于某些原因。
答案 0 :(得分:0)
像往常一样,这个MVC的东西我只是尝试每一个我能想到的随机副本和粘贴。在查看This CodeProject item时,我注意到您可以使ActionResult异步。想到这将允许我避免调用任务。我去做了这个:
[HttpPost]
public async Task<ActionResult> Create([FromServices]IServiceProvider serviceProvider,string roleName)
{
var RoleManager = serviceProvider.GetRequiredService<RoleManager<IdentityRole>>();
try
{
bool result = await RoleManager.RoleExistsAsync(roleName);
//LEFT OUT STRING.EMPTY CHECK FOR BREVITY
//NOTICE HOW I GOT A BOOLEAN COMPARISON BELOW (OLD AS THE HILLS!)
if (result)
{
throw new Exception("This Role Name already exists");
}
//ADD ROLE HERE IF NOT EXISTS AND NOT EMPTY
所以我希望我狂野的谣言会帮助别人。基本上我没有必要处理RolesStore制作RoleManager的方法,而且我能够找出异步并等待足够的东西在MVC 6动作结果中使用。
我仍然对这样做“简单”(LOL)的任何评论和方法持开放态度。我很乐意将一个“接受的答案”交给一个饥肠辘辘的人。