根据视图模型中的字符串更新内容

时间:2013-04-23 11:22:19

标签: c# asp.net-mvc asp.net-mvc-4 asp.net-mvc-viewmodel

我正在运行一个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; }
}
  • 用户:原始用户
  • SearchQuery :视图返回的查询
  • QueriedUsers :用户排序后的用户

在我看来,我有以下代码:

@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子句,所以我可以根据搜索输入显示相关数据。

1 个答案:

答案 0 :(得分:1)

来自@ LarsHoldgaard的最后评论:

  

非常感谢你的帮助,我对这个项目非常困惑。   但是,解决方案是将Search HttpPost更改为:

    return View("Index", NewUserListModel(input));