asp.net/wingtip/显示数据和详细信息
前边我们的工作处于wingtip工程基础建设阶段,先是建立了“数据访问层”,然后设计建设了“UI和导航”的框架,接下来要充实工程的内容,显示“数据和详细信息”。
一. 添加数据控件(Data Control)
这里的数据控件是用以显示产品内容的。
在asp.net中有几种方法可以绑定数据:
1.使用数据源控件(Data Source Control)
数据源控件使得程序可以直接访问到数据,基本的逻辑不需要自行编程,按官方提供的轮子,用就对了。
2.手动编写代码(Code-By-Hand)
顾名思义,手动编写代码完成各种操作,比如:读取、检查、转换、使用数据等等。在需要完全控制程序行为的时候,采取手动编码。
3.使用模型绑定(Model Binding)
这个我还不是很懂...感觉和数据源控件差不多....msdn官方文档是这么写的:
“Using model binding allows you to bind results using far less code and gives
you the ability to reuse the functionality throughout your application. Model binding aims
to simplify working with code-focused data-access logic while still retaining
the benefits of a rich, data-binding framework."
不翻译了,因为翻译了我也觉得跟数据源控件差不多...
二. 显示产品
2.1 前端页面
在这个项目里的产品显示环节,采用了模型绑定(Model Binding)的方式。如果想让数据控件(Data Control)能够实现模型绑定的方法,就需要设置控件中的SelectMethod属性,将之设为页面代码的方法。数据控件会在页面生命周期中的适当时期调用SelectMethod的方法。
下面对ProductList.aspx页面进行模型绑定(Model Binding),以便显示产品:
<%@ Page Title="Products" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true"
CodeBehind="ProductList.aspx.cs" Inherits="WingtipToys.ProductList" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<section>
<div>
<hgroup>
<h2><%: Page.Title %></h2>
</hgroup> <asp:ListView ID="productList" runat="server"
DataKeyNames="ProductID" GroupItemCount="4"
ItemType="WingtipToys.Models.Product" SelectMethod="GetProducts">
<EmptyDataTemplate>
<table >
<tr>
<td>No data was returned.</td>
</tr>
</table>
</EmptyDataTemplate>
<EmptyItemTemplate>
<td/>
</EmptyItemTemplate>
<GroupTemplate>
<tr id="itemPlaceholderContainer" runat="server">
<td id="itemPlaceholder" runat="server"></td>
</tr>
</GroupTemplate>
<ItemTemplate>
<td runat="server">
<table>
<tr>
<td>
<a href="ProductDetails.aspx?productID=<%#:Item.ProductID%>">
<img src="/Catalog/Images/Thumbs/<%#:Item.ImagePath%>"
width="100" height="75" style="border: solid" /></a>
</td>
</tr>
<tr>
<td>
<a href="ProductDetails.aspx?productID=<%#:Item.ProductID%>">
<span>
<%#:Item.ProductName%>
</span>
</a>
<br />
<span>
<b>Price: </b><%#:String.Format("{0:c}", Item.UnitPrice)%>
</span>
<br />
</td>
</tr>
<tr>
<td> </td>
</tr>
</table>
</p>
</td>
</ItemTemplate>
<LayoutTemplate>
<table style="width:100%;">
<tbody>
<tr>
<td>
<table id="groupPlaceholderContainer" runat="server" style="width:100%">
<tr id="groupPlaceholder"></tr>
</table>
</td>
</tr>
<tr>
<td></td>
</tr>
<tr></tr>
</tbody>
</table>
</LayoutTemplate>
</asp:ListView>
</div>
</section>
</asp:Content>
这里用ListView控件:
<asp:ListView ID="productList" runat="server"
DataKeyNames="ProductID" GroupItemCount="4"
ItemType="WingtipToys.Models.Product" SelectMethod="GetProducts">
可以看到,SelectMethod="GetProducts",这是在后台设计编写的方法,稍后介绍。
ListView使用我们自己定义的模板(Template)和样式(Style)来显示各个产品。因为把控件中的属性ItemType设置为了"WingtipToys.Models.Product",所以<%#:
Item.***%
>中的Item就是Product类型的了,"."后可以自动提示该类下的各个字段。
2.2 添加代码以显示产品
在这个项目中有很多种类的玩具,比如车、火箭、飞机等等,现在要实现点击某个类别后跳转到该类别下的商品显示页面。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using WingtipToys.Models;
using System.Web.ModelBinding; namespace WingtipToys
{
public partial class ProductList : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{ } public IQueryable<Product> GetProducts([QueryString("id")] int? categoryId)
{
var _db = new WingtipToys.Models.ProductContext();
IQueryable<Product> query = _db.Products;
if (categoryId.HasValue && categoryId > )
{
query = query.Where(p => p.CategoryID == categoryId);
}
return query;
}
}
}
GetProduct方法中的参数是"[QueryString("id")] int? categoryId“,通过queryString查询出来的id被赋值给categoryId,然后数据库再通过这个categoryId去查询对应类别的商品数据。QueryStringAttribute
类来自于System.Web.ModelBinding
命名空间,该类用于检索查询字符串变量 id 的值。这会在"模型绑定"方法(model binding)在运行的时候,告诉它要把QueryString方法查询到的字符串数据绑定给categoryId这个参数
。
三. 运行wingtip应用程序
程序运行起来会显示一行字符形式的链接,分别是cars、planes、trucks等产品类别,选择一个类别点进去,会看到当前页面只显示该类下的全部产品。
四. 显示产品的详细信息
asp.net/wingtip/显示数据和详细信息的更多相关文章
- 最简单的方法是使用标准的 Linux GUI 程序之一: i-nex 收集硬件信息,并且类似于 Windows 下流行的 CPU-Z 的显示。 HardInfo 显示硬件具体信息,甚至包括一组八个的流行的性能基准程序,你可以用它们评估你的系统性能。 KInfoCenter 和 Lshw 也能够显示硬件的详细信息,并且可以从许多软件仓库中获取。
最简单的方法是使用标准的 Linux GUI 程序之一: i-nex 收集硬件信息,并且类似于 Windows 下流行的 CPU-Z 的显示. HardInfo 显示硬件具体信息,甚至包括一组八个的流 ...
- asp.net/wingtip/创建数据访问层
一. 什么是数据访问层 在wingtip项目中,数据访问层是对以下三者的总称:1. product类等数据相关的实体类(class)2. 数据库(database),对实体类成员的存储3. 上述二者的 ...
- [Elixir005] 查看指定数据的详细信息 i helper
elixir在1.2后增加了一个新的特性i helper. 在iex shell中使用i可以查看任意数据的数据类型和详细描述 #查看变量描述 iex(1)> i {:test, "Th ...
- win10 显示详细信息窗格
win10 显示详细信息窗格 CreateTime--2018年5月26日09点13分 Author:Marydon 1.说明: win10无法像win7那样将详细信息窗格显示在窗口的底部,只能显 ...
- Asp.Net MVC4入门指南(9):查询详细信息和删除记录
在本教程中,您将查看自动生成的Details和Delete方法. 查询详细信息和删除记录 打开Movie控制器并查看Details方法. public ActionResult Details(int ...
- 单击HighCharts柱形体弹框显示详细信息
上篇博客介绍了如何在HighCharts统计图表下生成表格,二者相互结合,可以对数据进行更好的统计分析.在统计的同时,如果需要想要及时查看详细信息的话,就得再加一个功能,就是单击柱形体,显示该项下的详 ...
- 详细介绍ASP.NET页面间数据传递的使用方法
源码:http://www.jinhusns.com/Products/Download/?type=xcj 在ASP.NET中,页面间数据传递的方法有很多.下面为大家总结一下,页面间数据传递的方法. ...
- 用Entity Framework往数据库插数据时,出现异常,怎么查看异常的详细信息呢?
做项目时,在用Entity Framework往数据库插数据时,程序报异常,但是通过报的异常死活没法查看异常的详细信息.这让人很是烦恼.本着自己动手丰衣足食的原则,通过查看资料终于找到了显示异常详细信 ...
- Asp.Net MVC 中JS通过ajaxfileupload上传图片获取身份证姓名、生日、家庭住址等详细信息
客户要求用身份证图片上传获取身份证的详细信息就下来研究了一下(现在的客户真的懒 身份证信息都懒得输入了哈哈...),经过慢慢研究,果然皇天不负有心人搞出来了.这个借助的是腾讯的一个SKD 腾讯优图云 ...
随机推荐
- Daily Pathtracer!安利下不错的Pathtracer学习资料
0x00 前言 最近看到了我司大网红aras-p(Aras Pranckevičius)的博客开了一个很有趣的新系列<Daily Pathtracer~>,来实现一个简单的ToyPathT ...
- Hadoop 排序
数据排序是许多实际任务在执行时要完成的第一项工作,比如学生成绩评比.数据建立索引等.这个实例和数据去重类似,都是先对原始数据进行初步处理,为进一步的数据操作打好基础. 1.实例描述 对输入文件中的数据 ...
- Linux下源码安装并配置Nginx
实验环境 一台最小化安装的CentOS 7.3 虚拟机 安装nginx 安装nginx依赖包 yum install -y pcre-devel zlib-devel openssl-devel wg ...
- #Java学习之路——第一部分总结
今天主要是Java的入门以及idea的安装说实话,没有什么有技术含量的东西,发的也全是皮毛,但是在数组部分有很多细节需要注意,在JDK环境变量配置的地方不光光只有windows 的环境配置,还要掌握补 ...
- 【dotNet Core】Swagger下简单的给WebApi分组
Startup.cs下ConfigureServices代码 这里主要在DocInclusionPredicate控制输出那些api. Startup.cs下Configure代码 给Controll ...
- [Reversing.kr] Easy Crack Writeup
题目:http://reversing.kr/ Easy Crack IDA打开.分析可知Sub_401080是关键函数.F5后. 当满足 则跳转成功.拼接后得到flag flag: Ea5yR3ve ...
- Android jni Crash堆栈信息分析
如何定位Android NDK开发中遇到的错误 NDK编译生成的.so文件作为程序的一部分,在运行发生异常时同样会造成程序崩溃.不同于Java代码异常造成的程序崩溃,在NDK的异常发生时,程序在And ...
- 『字符串模式匹配 KMP』
字符串模式匹配 我们要先了解一下问题是什么. 模式匹配是数据结构中字符串的一种基本运算,给定一个子串,要求在某个字符串中找出与该子串相同的所有子串,这就是模式匹配. KMP 然后我们来认识一下今天的主 ...
- Kibana安全特性之权限控制
1. 前言 在之前的例子中,我们都是直接输入地址访问的,系统也没有提示我们要输入用户名密码.但是,在实际使用过程中不大可能所有人都是超级管理员可以做任何操作,一定是有权限控制的,这里我们借助X-Pa ...
- C# 《编写高质量代码改善建议》整理&笔记 --(一)基本语言篇
题记:这是自己的观后感,工作两年了,本来打算好好学习设计模式,或者作为客户端深入了解GPU编程的,但是突然发现还有这么一本书. <编写高质量代码改善建议>,感觉这正是自己需要的. 我是做 ...