簡體   English   中英

一鍵獲取值並綁定以查看模型

[英]Get Values With One Select and Bind To View Model

我正在使用Web服務來獲取活動目錄用戶並將其值綁定到視圖模型。 但是Web服務是如此之慢,因此每個查詢花費的時間都是一個接一個。 我可以僅通過一個查詢獲取值並將其綁定到視圖模型嗎?

我的代碼是這樣的:

    public ActionResult EditUser(string id)
    {
        AdVM model = new AdVM();

        Security s = new Security();
        s.Cn = "Users";
        ADLogin a = new ADLogin();

        model.Username = a.ADGetAllUser(s).Where(x => x.UserName == id).Select(x=>x.UserName).FirstOrDefault();
        model.DisplayName = a.ADGetAllUser(s).Where(x => x.UserName == id).Select(x => x.DisplayName).FirstOrDefault();
        model.FirstName = a.ADGetAllUser(s).Where(x => x.UserName == id).Select(x => x.FirstName).FirstOrDefault();
        model.LastName = a.ADGetAllUser(s).Where(x => x.UserName == id).Select(x => x.LastName).FirstOrDefault();

        model.Title = a.ADGetAllUser(s).Where(x => x.UserName == id).Select(x => x.Title).FirstOrDefault();
        model.Department = a.ADGetAllUser(s).Where(x => x.UserName == id).Select(x => x.Department).FirstOrDefault();
        model.Division = a.ADGetAllUser(s).Where(x => x.UserName == id).Select(x => x.Division).FirstOrDefault();

        return PartialView("_PartialEdit", model);
    }

您應該嘗試這樣:

AdVM model = a.ADGetAllUser(s).Where(x => x.UserName == id).Select(x=> new AdVM() {Username = x.UserName, DisplayName = x.DisplayName... other fileds}).SingleOrDefult();

你可以試試這個

var user = a.ADGetAllUser(s).Where(x => x.UserName == id).FirstOrDefault();

只需刪除Select語句。

通常,擊中AD並不是最快的事情。 我會將用戶緩存到靜態變量中,並經常刷新它。 然后,您可以只檢索GET所需的單個用戶。

另外,您可以按照Florim的建議更改您的方法以一次全部返回它們。 您不需要方法中的id參數,並且極有可能需要對視圖進行重做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM