【问题标题】:Get Values With One Select and Bind To View Model一键获取值并绑定到视图模型
【发布时间】:2015-12-29 22:20:09
【问题描述】:

我正在使用 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);
    }

【问题讨论】:

    标签: c# asp.net-mvc linq web-services viewmodel


    【解决方案1】:

    你应该试试这个:

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

    【讨论】:

    • 这就是我想要的。只是 SingleOrDefult 没有用。我使用了 FirstOrDefault。
    【解决方案2】:

    你可以试试这个

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

    只需删除 Select 语句。

    【讨论】:

      【解决方案3】:

      一般来说,命中 AD 并不是最快的事情。我会将用户缓存到静态变量并经常刷新它。然后您可以只检索 GET 所需的单个用户。

      或者,您可以更改方法以按照 Florim 的建议一次将它们全部返回。您不需要方法中的 id 参数,并且很可能需要重新设计您的视图。

      【讨论】:

      • 我现在正在家里调用 Web 服务。我想这是它速度慢的原因。上班没问题。
      猜你喜欢
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 2012-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多