我的项目中有User类,并且具有UserRow模型(用于在视图中显示用户) 这是UserRow
using System;
namespace Argussite.SupplierServices.ViewModels
{
public class UserRow
{
public Guid Id { get; set; }
public string FullName { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public int Status { get; set; }
public int Role { get; set; }
public Guid SupplierId { get; set; }
public bool ActionsAllowed { get; set; }
public bool MailResendRequired { get; set; }
}
}
我需要在我的控制器中添加检查ActionsAllowed
[HttpPost]
public ActionResult Unlock(Guid id)
{
var user = Context.Users.Find(id);
if (user == null)
{
return Json(CommandResult.Failure("User was not found. Please, refresh the grid and try again."));
}
var checkActionsAllowed = Context.Users.AsNoTracking()
.Select(e => new UserRow
{
Id = e.Id,
ActionsAllowed = e.ActionsAllowed
};
if (checkActionsAllowed == true)
{
user.Status = UserStatus.Active;
return Json(CommandResult.Success(string.Format("User {0} has been unlocked.", user.FullName)));
}
else return;
}
但我在ActionsAllowed = e.ActionsAllowed
和
时遇到错误
在else return;
中
请帮我解决这个问题。
答案 0 :(得分:1)
你有两个问题:
Context.Users.AsNoTracking()
.Select(e => new UserRow
{
ActionsAllowed = e.ActionsAllowed
};
返回对象列表,而不是单个对象。 您已经查询过上面的用户,所以我想您可以简单地写一下:
if (user.ActionsAllowed) {
user.Status = UserStatus.Active;
return Json(CommandResult.Success...);
}
第二个问题是return;
声明。
您的方法返回一个动作结果,因此您必须返回一些内容。
例如
return Json(CommandResult.Failure(
"ActionsAllowed = false"));
答案 1 :(得分:0)
第一个错误听起来像你User
类没有提供ActionsAllowed
布尔属性,而第二个错误发生是因为你需要从方法中返回某些东西被解释为ActionResult
。
修改强>
嗯,我第一次没有注意到这一点,但是这个:var checkActionsAllowed = Context.Users.AsNoTracking()
.Select(e => new UserRow
{
Id = e.Id,
ActionsAllowed = e.ActionsAllowed
};
接着是:
if (checkActionsAllowed == true)
毫无意义 - 你没有从Select
方法返回布尔结果,而是返回IEnumerable
。也许您应该在问题中添加User
架构,以便更明显地了解您要完成的任务。