1

私はasp.netmvc4、simplemembership、EFを使用しています。

実際、私は自分のデータベースでユーザーを検索するためのこのコードを持っています。

HomeController:

        private UsersContext db = new UsersContext();

        public ActionResult Index(string searchUser)
        {
            var user = from m in db.UserProfiles
                       select m;

            if (!String.IsNullOrEmpty(searchUser))
            {
                user = user.Where(s => s.UserName.Contains(searchUser));
            }

            return View(user);
        }

インデックスビュー:

 <div id="searchUser">
            @using (Html.BeginForm("Index", "Home", FormMethod.Get))
            {   
                <p>
                    @Html.TextBox("searchUser")
                    <input type="submit" value="Chercher" />
                </p>     
            }
  </div>
             /********** PART 1 ***********/
        @{
            var db = new UsersContext();
            var list = db.UserProfiles.ToList();

            foreach (var item in list)
            {
                <table>
                    <tr>
                        <td>
                            @Html.DisplayFor(m => item.UserName)
                        </td>
                    </tr>
                </table>

            }
        }

ここのパート1は廃止されました。その代わりに、検索したユーザーの名前を返したいのですが、そうでない場合は、彼が存在しないというメッセージを表示したいと思います。

実際、私のリクエストは機能しているように見えますが、ビューに何も返されません。誰かがこれを解決する方法を知っていますか?

ありがとうございました。

4

1 に答える 1

2

このようなことを試してください、

コントローラでは、常に同じタイプをビューに返す必要があります。

private UsersContext db = new UsersContext();

public ActionResult Index(string searchUser = "")
{
    IEnumerable<User> result;

    if (!String.IsNullOrEmpty(searchUser))
    {
        var userFound = (from m in db.UserProfiles
                   where m.UserName.Constains(searchUser)
                   select m).FirstOrDefault(); // to take the first user you have found, but it is still an List.

            result = new List<User>() { userFound };
    }
    else 
    {
        result = (from m in db.UserProfiles
                 select m).ToList();
    }

    return View(result); // return the type for your view
}

そして、アクションに同じタイプでビューを入力し、それを読んでテーブルを表示します...

// type your view with IEnumerable<User>
@model IEnumerable<User>

<div id="searchUserForm">
    @using (Html.BeginForm("Index", "Home", FormMethod.Get))
    {   
    <p>
        @Html.TextBox("searchUser")
        <input type="submit" value="Chercher" />
    </p>     
    }
</div>

@if (Model.Any()) // Model is an IEnumerable<User>
{
    <table>
        <tr>
            <th>UserName</th>
        </tr>   
    foreach (var item in Model)
    {
        <tr>
            <td>
                @Html.DisplayFor(m => item.UserName)
            </td>
        </tr>
    }
    </table>
}
else 
{
    <p> No users to display.</p>
}
于 2012-12-18T20:00:05.507 に答える