我想在我的MVC中获取用户列表。
Visual Studio一直说我是
"使用未赋值的局部变量'模型'"。
我尝试了不同的方法,但无法修复错误。谁能告诉我我哪里做错了?
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);
}
你只是在声明你的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();
错误非常明显,您必须在使用前提供默认值。
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();
而不是:
IEnumerable<UserModel> model;
试试这个:
List<UserModel> model = new List<UserModel>();
或:
IEnumerable<UserModel> model = new List<UserModel>();