2

次のようなビュー モデルを持つ 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));
}

検索フィールドで Enter をクリックする前に、次のような URL が表示されます。

http://localhost:61162/Admin/Users

Enterをクリックすると、次のようになります。

http://localhost:61162/Admin/Users/Search

ブレークポイントから、コントローラー コードが実行されていることがわかります。

新しい URL で表示されるエラーは次のとおりです。

リソースが見つかりません。説明: HTTP 404。探しているリソース (またはその依存関係の 1 つ) は、削除されたか、名前が変更されたか、一時的に利用できない可能性があります。次の URL を見直して、スペルが正しいことを確認してください。

Requested URL: /Admin/EditUser/Search

もちろん、URLが変更されたことが原因です。

私の問題を解決するためのヒントはありますか? :-) ユーザーに where 句を付けたいだけなので、検索入力に応じて関連データを表示できます。

4

1 に答える 1

1

@LarsHoldgaard の最後のコメントから:

助けてくれてありがとう、私はプロジェクトに本当に混乱していました。ただし、解決策は Search HttpPost を次のように変更することでした。

    return View("Index", NewUserListModel(input));
于 2013-04-23T14:22:18.963 に答える