如何使用模板为查询存储过程的控制器创建视图?
嘿,我来帮你搞定这个视图创建的事儿!下面一步步教你给这个查询存储过程的控制器配上合适的视图:
为存储过程查询控制器创建视图的完整步骤
首先先确认下你已有的关键代码,方便后续对应操作:
控制器代码
public ActionResult Display() { return View(db.P_GET_USER().ToList()); }
上下文类中的存储过程调用方法
public virtual ObjectResult<P_GET_USER_Result> P_GET_USER() { return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<P_GET_USER_Result>("P_GET_USER"); }
1. 生成强类型视图
在控制器的Display方法上右键,选择添加视图,然后按以下配置设置:
- 视图名称:保持默认的
Display即可 - 模板:根据需求选择,展示列表选List、看详情选Details,一般用户列表用List模板最适配
- 模型类:选择
P_GET_USER_Result(就是你提到的那个复杂类型,确保它已经在项目中存在) - 数据上下文类:可选,因为控制器已经传递了列表数据,也可以不选
- 勾选创建强类型视图和使用布局页(如果项目有统一布局的话)
2. 自定义视图内容(以List模板为例)
生成的视图会自动基于P_GET_USER_Result的属性生成表格,你可以根据实际需求调整,比如修改表头文字、添加操作按钮等。给你个参考示例:
@model IEnumerable<P_GET_USER_Result> @{ ViewBag.Title = "用户列表"; } <h2>用户列表</h2> <p> @Html.ActionLink("添加新用户", "Create") </p> <table class="table"> <tr> <th> @Html.DisplayNameFor(model => model.UserId) </th> <th> @Html.DisplayNameFor(model => model.UserName) </th> <!-- 这里根据P_GET_USER_Result的其他属性继续添加表头 --> <th>操作</th> </tr> @foreach (var item in Model) { <tr> <td> @Html.DisplayFor(modelItem => item.UserId) </td> <td> @Html.DisplayFor(modelItem => item.UserName) </td> <!-- 对应属性的展示 --> <td> @Html.ActionLink("查看详情", "Details", new { id=item.UserId }) | @Html.ActionLink("编辑", "Edit", new { id=item.UserId }) | @Html.ActionLink("删除", "Delete", new { id=item.UserId }) </td> </tr> } </table>
3. 关键注意事项
- 确保
P_GET_USER_Result类的属性都是public修饰的,不然视图无法正常读取数据 - 检查存储过程返回的字段和
P_GET_USER_Result的属性是否完全匹配(字段名、数据类型),不匹配会出现绑定错误 - 如果需要分页、排序功能,可以在控制器中对
db.P_GET_USER().ToList()做进一步处理,比如用分页库,再在视图中添加分页控件
这样操作下来,你的Display控制器就能正常渲染展示存储过程返回的用户数据啦!
内容的提问来源于stack exchange,提问作者user4221591
相关产品推荐
相关产品推荐

