好吧,我仍在掌握 ASP.NET 和 MVC 框架的窍门,并将我的知识从经典的 ASP 和 VB 转换过来 - 所以请保持温柔。
我的第一个视图 (/home/details/X) 运行良好感谢之前的帮助为我指明了正确的方向 https://stackoverflow.com/questions/1210413/asp-net-mvc-c-object-reference-errors-when-going-to-view-record-details,现在我需要将多个表和查询/视图中的数据添加到 MVC 视图中(我讨厌 SQL 和 MVC 都使用视图一词来表示不同的含义)。
我不是在寻找有人为我写下答案(除非他们感觉真的精力充沛),更重要的是有人为我指出正确的方向,即我应该查看并阅读以理解它并做的事情这个我自己。
我的问题
我需要在此视图中显示多个数据集,并且每个不同的数据集都建立了正确的 PK/FK 1-M 关系,并且需要循环生成结果记录。
以前我会怎么做
在我的经典 ASP 时代,我只需在要使用数据的页面头部定义 SQL 查询,并使用如下所示的 select 语句:
SELECT * FROM query_name
WHERE query_uniquecolumnname = Request.QueryString("value")
完成后,您可以设置 do while query_name NOT BOF/EOF,然后放入您想要从该查询中获得的字段名称,一切就完成了。
我现在如何实现这一目标?
那么,从我的经典 ASP 知识快进,我如何使用 MVC 实现相同的结果呢?
我希望使用的表/视图已经在我的数据模型中定义(并且关系显示在那里,我认为这是一个优点),我只需要弄清楚如何在页面中调用它们并使用详细信息视图中显示的记录 ID,以确保仅显示相关数据。
提前致谢
您正在寻找的概念称为视图模型 http://stephenwalther.com/blog/archive/2009/04/13/asp.net-mvc-tip-50-ndash-create-view-models.aspx。本质上,这是您编写的自定义类,其中包含视图中将使用的所有数据。因此它负责合并来自不同表的所有数据并将其作为属性公开。如果您使用数据访问层,这通常就像将几个实体组合在一起一样简单。如果您使用原始 SQL 来执行此操作,那么您将在访问属性时执行查询。
然后你可以让你的 View 继承 ViewModel,如下所示:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<MvcApplication1.Models.MyViewModel>" %>
现在在您的视图中,您只需编写如下语句即可访问对象的所有不同属性:
<%= Html.TextBox("MyProperty", Model.MyProperty) %>
要从控制器构造视图,请创建类的新实例 (MyViewModel),向其传递所需的详细信息记录的 ID,类中的逻辑将负责获取正确的数据。然后像平常一样从控制器返回您的视图。
var myDetailsModel = new MyViewModel(detailsID);
return View(myDetailsModel);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)