我正在运行一个MVC应用程序,它有一个像这样的视图模型:
public class UserListViewModel
{
public UserListViewModel()
{
Users = new List<UserViewModel>();
QueriedUsers = new List<UserViewModel>();
}
public List<UserViewModel> Users { get; private set; }
public string SearchQuery { get; set; }
public List<UserViewModel> QueriedUsers { get; private set; }
}
在我看来,我有以下代码:
@using (Html.BeginForm("Search", "EditUser"))
{
@Html.EditorFor(model => Model.SearchQuery);
}
@if (Model.QueriedUsers != null && Model.QueriedUsers.Any())
{
foreach (var u in Model.QueriedUsers)
{
// do stuff
}
}
else
{
foreach (var u in Model.Users)
{
// do stuff
}
}
这是控制器中的HttpPost代码:
[HttpPost]
public ActionResult Search(UserListViewModel input)
{
return View("EditUser",NewUserListModel(input));
}
在我点击我的搜索字段中输入之前,我有一个这样的网址:
http://localhost:61162/Admin/Users
点击回车后,我得到:
http://localhost:61162/Admin/Users/Search
从断点开始,我可以告诉控制器代码已经运行。
我在新网址中收到的错误是:
无法找到资源。 说明:HTTP 404.您要查找的资源(或其中一个依赖项)可能已被删除,其名称已更改,或者 暂时不可用。请查看以下网址并制作 确保它拼写正确。
Requested URL: /Admin/EditUser/Search
这当然是由网址引起的。
任何提示如何解决我的问题? :-)我只想在我的用户上有一个where子句,所以我可以根据搜索输入显示相关数据。
答案 0 :(得分:1)
来自@ LarsHoldgaard的最后评论:
非常感谢你的帮助,我对这个项目非常困惑。 但是,解决方案是将Search HttpPost更改为:
return View("Index", NewUserListModel(input));