2013-06-21 138 views
-1

我有類用戶在我的項目,並有模型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; 
    } 

,但我在else return;
ActionsAllowed = e.ActionsAllowed
遇到錯誤請幫我解決這個問題。

回答

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模式添加到你的問題中,以便更明顯地表明你想要完成什麼。

+0

是的,我有'UserRow'屬性'ActionsAllowed',但沒有它'User',但我不知道如何讓用戶使用ID在控制器檢查。而在其他情況下,我什麼也得不到。 – Heidel

+0

你不能只是返回一個操作方法 - 必須發送某種響應。一個簡單的'return false'可能起作用,儘管我會想出一個更有意義的響應代碼,或者拋出一個'HttpException'。請記住,您正在響應HTTP請求。 –

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")); 
+0

我不能使用'if(user.ActionsAllowed)',因爲我在'UserRow'類中擁有屬性'ActionsAllowed',但沒有'User'。我需要使用用戶的ID,但我不知道如何做到這一點。 – Heidel

+0

你想從哪裏查詢用戶行?你查詢Context.Users,我猜是那種類型的用戶,對吧?然後你寫了'e.ActionsAllowed',所以來自User類。 – Jan

+0

我不知道如何從UserRow獲得屬性ActionsAllowed與用戶的ID! – Heidel