the*_*ter 3 c# model-view-controller asp.net-mvc
好吧,我仍然掌握着asp.net和MVC框架,并将我的知识转化为经典的ASP和VB - 所以请保持温和.
我的第一个视图(/ home/details/X)运行良好,这要归功于之前的帮助指向我正确的方向,现在我需要将多个表和查询/视图中的数据添加到MVC视图中(我讨厌SQL和MVC都使用单词视图来表达不同的含义).
我不是在寻找有人为我写答案(除非他们感觉精力充沛),更多的是让某人指出我应该看的正确方向并阅读以理解和做我自己.
我的问题
我需要在此视图中显示多个数据集,并且每个不同的数据集都建立了正确的PK/FK 1-M关系,并且需要对结果记录进行循环.
我以前怎么会这样做
在我的经典ASP时代,我刚刚在页面的头部定义了SQL查询,其中使用了以下行的select语句:
SELECT * FROM query_name
WHERE query_uniquecolumnname = Request.QueryString("value")
Run Code Online (Sandbox Code Playgroud)
完成后,您将设置do而query_name NOT BOF/EOF,然后从该查询中删除您想要的字段名称,这一切都已完成.
我现在如何实现这一目标?
因此,从我的经典ASP知识快速转发,我如何用MVC实现相同的结果?
我希望使用的表/视图已经在我的数据模型中定义了(并且关系显示在那里,我认为这是一个加号),我只需要弄清楚如何在页面中调用它们并使用"详细信息"视图中显示的记录的ID,以确保仅显示相关数据.
提前致谢
您正在寻找的概念称为ViewModel.本质上,这是您编写的自定义类,其中包含将在视图中使用的所有数据.因此,它负责合并来自不同表的所有数据并将其作为属性公开.如果您正在使用数据访问层,这通常就像将几个实体放在一起一样简单.如果您使用原始SQL来执行此操作,那么您将在访问属性时执行查询.
然后,您将使View继承自ViewModel,如下所示:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<MvcApplication1.Models.MyViewModel>" %>
Run Code Online (Sandbox Code Playgroud)
现在在View中,只需编写如下语句即可访问对象的所有不同属性:
<%= Html.TextBox("MyProperty", Model.MyProperty) %>
Run Code Online (Sandbox Code Playgroud)
要从控制器构建视图,请创建类的新实例(MyViewModel),向其传递所需详细信息记录的ID,并且类中的逻辑将负责获取正确的数据.然后像往常一样从控制器返回您的视图.
var myDetailsModel = new MyViewModel(detailsID);
return View(myDetailsModel);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10600 次 |
| 最近记录: |