请,如果有人可以在不使用实体框架的情况下如何在MVC 5中创建搜索页面的帮助下,我将感到非常高兴。如果用户输入产品名称并发布,则结果以GridView
或InputBox
/ 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/