asp.net-mvc-4 – 如何将自定义linq查询传递给视图
发布时间:2020-12-16 06:49:42 所属栏目:asp.Net 来源:网络整理
导读:我正在学习和测试如何传递自定义 linq结果 控制器的代码: public ActionResult Index(){ const int pageSize = 5; return View(from p in db.powners where p.petowner.StartsWith("") orderby p.petowner.Skip(0).Take(pageSize).ToList() select new { p.
我正在学习和测试如何传递自定义
linq结果
控制器的代码: public ActionResult Index() { const int pageSize = 5; return View(from p in db.powners where p.petowner.StartsWith("") orderby p.petowner.Skip(0).Take(pageSize).ToList() select new { p.ownerid,p.petowner,p.ostreet }); } 来自视图的代码: @model System.Collections.Generic.IEnumerable<Mvc4test2.Models.powner> @{ ViewBag.Title = "Index"; } <link href="../../Content/PagedList.css" rel="stylesheet" type="text/css" /> <h2>Find owner</h2> <p> @using (@Html.BeginForm("index","lookup",FormMethod.Get)) { <b>Search</b>@Html.TextBox("search")<input type="submit" value="search" /> } </p> <table id="ownertable"> <tr> <th> @Html.DisplayNameFor(model => model.petowner) </th> <th> @Html.DisplayNameFor(model => model.ostreet) </th> <th></th> </tr> @foreach (var item in Model) { <tr> <td> <a href=""> @Html.DisplayFor(modelItem => item.ownerid) </a> </td> <td> @Html.DisplayFor(modelItem => item.petowner) </td> <td> @Html.DisplayFor(modelItem => item.ostreet) </td> </tr> } </table> 我尝试过的: @model IEnumerable<Mvc4test2.Models.powner> 和 @model System.Collections.Generic.IEnumerable<Mvc4test2.Models.powner> 获取以下错误: 传递到词典中的模型项的类型为“System.Data.Objects.ObjectQuery1并[d> f__AnonymousType43 [System.Int32,System.String,System.String]]”,但是这需要字典类型的模型项’ System.Collections.Generic.IEnumerable1 [Mvc4test2.Models.powner]”.` 任何想法如何传递此查询以查看并使其按预期工作. 解决方法
不要传递匿名类型.在这里,我建议你有两个选择.如果Powner类只有3个字段(ownerid,petowner,ostreet),那么在查询中选择新的{p.ownerid,p.ostreet}行是多余的.
public ActionResult Index() { const int pageSize = 5; var model = (from p in db.powners where p.petowner.StartsWith("") orderby p.petowner.Skip(0).Take(pageSize) select p).ToList(); return View(model); } 或者如果您的Powner类更复杂,并且您的视图必须仅显示ownerid,petowner和ostreet,则应创建仅包含这3个属性的视图模型类.例: public class PownerViewModel { public int OwnerId {get;set;} // You should modify these public string Petowner {get;set;} // properties types public string OStreet {get;set;} // since I don't exactly know what they are } ..并修改您的查询: public ActionResult Index() { const int pageSize = 5; var model = from p in db.powners where p.petowner.StartsWith("") orderby p.petowner.Skip(0).Take(pageSize) select new PownerViewModel() { OwnerId = p.ownerid,Petowner = p.petowner,OStreet = p.ostreet }; return View(model); } ..当然在您的视图中更改模型类型: @model System.Collections.Generic.IEnumerable<PownerViewModel> 附:因为我在这里编码,所以可能会有一些错误或拼写错误. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net mvc路由id参数
- 从ASP.Net中的sessionID获取会话对象
- 如何解决jQuery Validation针对动态添加的表单无法工作的问
- asp.net-mvc – ASP.NET MVC的所有可用ActionResults是什么
- asp.net-mvc – 使用浏览器栏将列表传递给MVC Web API方法
- asp.net – 为什么request.rawurl不包含http:// localhost
- asp.net-mvc – ASP.NET MVC运行IIS7部署问题
- ASP.NET MVC – Session为null
- asp.net-mvc – .NET自定义成员资格.自定义登录/注册:身份
- asp.net-mvc-3 – 如何在razor视图中设置@ model.attribute
推荐文章
站长推荐
- asp.net-mvc – ASP.NET MVC – 服务层 – 业务层
- 在不可见的asp.net面板中阻止数据绑定
- asp.net – 滚动的Log4Net日志文件中的自定义文件
- asp.net-mvc – 使ASP.MVC2/VS2010应用程序在IIS
- asp.net-mvc – 你可以更新部分视图而不是全页信
- asp.net-mvc-3 – 在动作过滤器中获取动作参数的
- ASP.NET MVC6:以编程方式设置webroot
- asp.net-mvc-3 – mvc3剃刀条件包装器div
- asp.net – 使用thinktecture IdentityServer v2
- ASP.NET 5中的手动防伪标记创建和验证
热点阅读