【发布时间】:2017-02-21 14:47:22
【问题描述】:
大家好,我遇到了一个问题,我在 qnd 找到解决方案之前搜索了该网站,但我似乎无法在我的代码中找到问题所在。所以我希望有经验的人可以在这里帮助我。
我想在主 index.cshtml 上的输入框中输入一些内容,然后发送它以搜索此输入。
从搜索开始的 Home/index.cshtml 不起作用。
@model webApp.Models.Table
@{
ViewBag.Title = "Home Page";
}
<div class="jumbotron">
<h1>WebApp</h1>
</div>
<div class="row">
<div class="col-md-4">
<h2>Index</h2>
<p>
@Html.ActionLink("Database lisst", "Index", "Tables")<br/>
</p>
</div>
<div class="col-md-4">
<h2>Search</h2>
<p>
@using (Html.BeginForm("Search", "Tables", FormMethod.Post))
{
<p>
Email: @Html.TextBoxFor(model => model.email) <br />
<input type="submit" value="Filter" />
</p>
}
</p>
</div>
搜索.cshtml
@model webApp.Models.Table
@{
ViewBag.Title = "Search";
}
<h2>Search</h2>
<div>
<h4>Table</h4>
<hr />
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.email)
</dt>
<dd>
@Html.DisplayFor(model => model.email)
</dd>
<dt>
@Html.DisplayNameFor(model => model.code)
</dt>
<dd>
@Html.DisplayFor(model => model.code)
</dd>
</dl>
</div>
<p>
@Html.ActionLink("Edit", "Edit", new { id = Model.Id }) |
@Html.ActionLink("Back to List", "Index")
</p>
控制器
public ActionResult Search(string emailString)
{
var search = from m in db.Table select m;
if (!String.IsNullOrEmpty(emailString))
{
search = search.Where(s => s.email.Contains(emailString));
}
return View(search);
}
我对 mvc 和 asp.net 非常缺乏经验,所以任何帮助都会非常好。
编辑:忘记提及实际问题,我现在一直收到此错误。
传入字典的模型项是类型 'System.Data.Entity.Infrastructure.DbQuery`1[webApp.Models.Table]', 但是这本字典需要一个类型的模型项 'webApp.Models.Table'。
【问题讨论】:
-
到底出了什么问题?你试过调试它吗?粗略一看,
webApp.Models.Table.email的名字似乎与emailString不匹配。 -
传入字典的模型项的类型是'System.Data.Entity.Infrastructure.DbQuery`1[webApp.Models.Table]',但是这个字典需要一个'webApp类型的模型项.Models.Table'。我不断收到此错误
-
您的查询生成
Table的集合,您将其传递给一个需要单个Table的视图 - 不知道您想要什么,但它要么return View(search.FirstOrDefaut());显示一个,要么更改视图到@model IEnumerable<Table>并使用循环显示每个对象的属性。
标签: asp.net asp.net-mvc search inputbox