请,如果有人可以在不使用实体框架的情况下如何在MVC 5中创建搜索页面的帮助下,我将感到非常高兴。如果用户输入产品名称并发布,则结果以GridViewInputBox / Label的形式显示在单行中。我在后端使用C#和SQLServer。我只是MVC和C#的初学者。

我创建了一个控制器,如下所示;

{
  connect pcon = new connect();
  using (SqlConnection conn = new SqlConnection(pcon.CS))
  {
    try
    {
      //do something
      pcon.cmd.CommandText = "SELECT * FROM tbproduct WHERE itemName=@name)";
      pcon.cmd.Parameters.Add(new SqlParameter("@name", System.Data.SqlDbType.NVarChar, 50));
      pcon.cmd.Parameters["@name"].Value = p.itemName;
      pcon.cmd.Connection = conn;
      conn.Open();
      datagridview = pcon.cmd.ExecuteReader();
      TempData["Success"] = "Record Added Sucessfully.";
      return RedirectToAction("Index", "Product");
    }
    catch (Exception ex)
    {
      // throw ex;
      // return RedirectToAction("Index", "Product");
      return View("Error", new HandleErrorInfo(ex, "Product", "AddProduct"));
    }    // end of try-catch
  }      // end of using
}        // end of spurious open bracket


这样,我不知道如何将其传递给视图以获取有意义的结果。
谢谢

最佳答案

实际上,您的控制器方法需要使用一些搜索参数来搜索并返回结果。

您还可以基于要在视图上显示的属性/字段创建视图模型,然后将结果映射到视图模型并返回。

public ActionResult DoSearch(string searchString)
{
    var movies = <get the movie list>;

    if (!String.IsNullOrEmpty(searchString))
    {
        movies = movies.Where(s => s.Title.Contains(searchString));
    }

    return View(movies);
}


在视图中,您可以通过循环显示结果的模型来创建表。

@model IEnumerable<MvcMovie.Models.Movie>
@
if (Model.Count() == 0)
{
  <tr>
  <td colspan = "3" >Records not found</td>
  </tr >
}
else
{
    foreach(var item in Model)
    {
    <tr>
    <td> @Html.DisplayFor(modelItem = > item.MovieName)</td>
    <td> @Html.DisplayFor(modelItem => item.ReleaseDate)</td>
    </tr >
    }
}


为了显示更有吸引力和用户友好的表,您还可以使用IPagedList

看看http://www.asp.net/mvc/overview/getting-started/introduction/adding-search教程。

关于c# - 如何在没有ef的情况下在MVC5中使用参数进行搜索,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37376780/

10-13 06:57