我想获取MVC中的用户列表。
Visual Studio一直说我是
“使用未分配的局部变量'model'”。
我尝试了不同的方法,但无法解决错误。谁能告诉我我做错了什么?。
public ActionResult Search(string searchTerm)
{
var users = new DirectorySource<UserModel>(ROOT,SearchScope.Subtree);
IEnumerable<UserModel> model;
var res = from usr in users
where usr.DisplayName.StartsWith(searchTerm)
select usr.DisplayName;
foreach (var result in res)
{
model.OrderBy(p => p.DisplayName).ToList();
}
if (Request.IsAjaxRequest())
{
return PartialView("_search", model);
}
return View(model);
}
答案 0 :(得分:3)
您只是声明了model
,但没有实例化它。您应该在尝试调用方法之前对其进行实例化(如OrderBy
)。其次,你不应该在for循环中执行OrderBy
,它只能执行一次。您可能希望使用Linq查询的结果和model
实例化select usr
,而不是显示名称。
var model = (from usr in users
where usr.DisplayName.StartsWith(searchTerm)
select usr).OrderBy(u => u.DisplayName).ToList();
答案 1 :(得分:1)
错误很明显,您必须在使用前提供默认值。
IEnumerable<UserModel> model = new List<UserModel>();
或
IEnumerable<UserModel> model = null;
这是为了消除您的错误,但您可以使用以下声明简化您的代码。
IEnumerable<UserModel> model = users.Where(usr=>usr.DisplayName.StartsWith(searchTerm))
.OrderBy(usr=>usr.DisplayName).ToList();
答案 2 :(得分:0)
而不是:
IEnumerable<UserModel> model;
试试这个:
List<UserModel> model = new List<UserModel>();
或:
IEnumerable<UserModel> model = new List<UserModel>();