-1

我的项目中有 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;

4

2 回答 2

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"));
于 2013-06-21T06:37:56.910 回答
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架构添加到您的问题中,以便更清楚您要完成的工作。

于 2013-06-21T06:35:20.647 回答