MVC5从数据库中检索数据

时间:2015-10-05 20:36:21

标签: asp.net asp.net-mvc asp.net-mvc-5

我创建了一个带有基本CRUD操作的控制器来处理我的数据库,我想添加一个自定义搜索功能来按名称搜索。

我试图将我的代码基于此,因为它基本上是相同的,并且这个工作正常。

// GET: Users/Details/5
public ActionResult Details(int? id)
{
    if (id == null)
    {
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
    }
    User user = db.Users.Find(id);
    if (user == null)
    {
        return HttpNotFound();
    }
    return View(user);
}

如果我在网址中添加名称而不是ID,我会尝试显示结果。

// GET: Users/UserSearch/Smith
public ActionResult UserSearch(string name)
{
    if (name == null)
    {
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
    }
    User user = db.Users.Find(name);
    if (user == null)
    {
        return HttpNotFound();
    }
    return View(user);
}

当我尝试使用它时,我得到:

Error Image

编辑我也试过这个,但无济于事:

public ActionResult UserSearch(string name)
{
    var user = from u in db.Users
               where u.UserName == name
               select u;

    return View(user);
}

这引发的错误:

enter image description here

2 个答案:

答案 0 :(得分:1)

要使 UserSearch 操作方法起作用,您需要配置路由。例如,

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        /* You need this */
        routes.MapRoute(
            name: "Name",
            url: "{controller}/{action}/{name}",
            defaults: new { controller = "Home", action = "Index", 
                id = UrlParameter.Optional }
        );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = 
                UrlParameter.Optional }
        );
    }
}

另一个错误 - 找不到视图

找不到“UserSearch”视图表示您没有UserSearch视图。你需要创建一个。

答案 1 :(得分:0)

作为尝试创建它的另一种方法,您是否尝试为其创建模型,然后使用该模型创建控制器?您不必这样做,但我知道创建一个包含您希望存储在数据库中的属性的模型是让它为您完成工作的一种方式。

只是一个想法,但另一个问题是没有与用户身份验证相关联(如果这是你的目标)。

我建议创建第二个MVC实例来测试模型创建。只需将属性设置为public string name { get;set; }以及您希望跟踪的任何其他内容。

编辑:我认为包含其他步骤会更好。从这一点来说,我不能清楚地记住它们,但是一旦你使用你想要的属性创建了一个模型,你就可以根据该模型创建一个控制器。这将创建需要运行的控制器和视图。