Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在视图中返回搜索结果?_C#_Asp.net Mvc_Entity Framework_Search - Fatal编程技术网

C# 如何在视图中返回搜索结果?

C# 如何在视图中返回搜索结果?,c#,asp.net-mvc,entity-framework,search,C#,Asp.net Mvc,Entity Framework,Search,我正在使用asp.NETMVC4、simplemembership和EF 实际上,我有这个代码来搜索数据库中的用户 家庭控制器: private UsersContext db = new UsersContext(); public ActionResult Index(string searchUser) { var user = from m in db.UserProfiles

我正在使用asp.NETMVC4、simplemembership和EF

实际上,我有这个代码来搜索数据库中的用户

家庭控制器:

        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>

            }
        }
这里的第一部分已经过时了。相反,我想返回我搜索的用户的名字,如果他存在,否则我想显示一条消息说他不存在

实际上,我的请求似乎有效,但它在视图中没有返回任何内容,是否有人知道我如何解决此问题


谢谢。

试试这样的东西

在控制器上,始终应为视图返回相同的类型

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>
}

nothink如果用户不存在Hanks,它将返回我搜索的用户,但有一种方法可以在我搜索一个用户时,不在foreach循环中显示所有用户,而只显示搜索结果?或者仅仅使用ajax就可以了?谢谢你纠正我的英语:我试过@Html.DisplayForModelModel.Selectm=>m.UserName,它返回了一个数字,我一直在找Chris,看看我编辑的代码。在本例中,如果要显示找到的第一条记录,请使用FirstOrDefault方法,您将只获得一条记录。在此之后,添加一个具体列表,因为您的视图正在等待列表,而不是单个用户。在控制器的else条件下,我得到的结果为:result=new list.DefaultIfEmpty,这样,只有在搜索用户时才会显示某些内容。现在,如果我的用户不存在,视图中就不会显示我的else条件。为什么?我真的不明白我的ifModel是什么意思。任何条件都意味着…你的模型是用IEnumerable right键入的,所以你的动作方法的每个输出都应该返回这个类型来呈现这个视图,这是一个MVC规则,你不能更改它,你也可以返回null,但这不是一件好事。Any是IEnumerable的一个Excelion方法,如果集合中有记录,则返回true。