MVC查看详细数据【四】
一、本篇文章主要讲解点击详细,将主键id的值传递到后端,或者将多个值传递给后台的三种方式,并且通过id的值在数据库中查找到相对应的数据,赋值给viewData视图。
1. 第一种将主键id的值传递给后端的方式。
首先我们来看一下在MVC项目中,RouteConfig.cs文件夹下规定的路由规则。注意红色区域的代码。规定了路由规则是,控制器 / 视图名 / id的值。就是指可以带一个额外的参数。
namespace MvcApplication1
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
}
1.1 前端代码如下: 以下的href=“/UserInfo/ShowDetail/1” ,当发送给ShowDetail页面的时候,如果ShowDetail方法的参数名为id,那么会自动接收该值。
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
<%@ Import Namespace="MvcApplication1.Models" %>
<!DOCTYPE html> <html>
<head runat="server">
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
<table>
<tr><th>ID</th><th>用户名</th><th>密码</th><th>邮箱</th><th>创建日期</th><th>详细</th></tr>
<%-- <%=ViewData["userinfolist"] %>--%>
<%foreach( var userinfo in (IQueryable<Userinfo>)ViewData["userinfolist"]) {%>
<tr>
<td><%=userinfo.Id %></td>
<td><%=userinfo.username %></td>
<td><%=userinfo.password %></td>
<td><%=userinfo.Emil %></td>
<td><%=userinfo.CreateDate.ToShortDateString() %></td>
<td><a href="/UserInfo/ShowDetail/<%=userinfo.Id %>">详细</a></td>
</tr>
<%} %>
</table>
</div>
</body>
</html>
1.2 后端接收的代码很简单,直接使用id便可,这样就是最简单的传递单一参数到后端的方法。
public ActionResult ShowDetail(int id)
{
return Content(id.ToString());
}
2.1 第二种传递参数到后端的方法,并且希望可以传递多个参数的,其实也就是通过get方式传参。
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
<%@ Import Namespace="MvcApplication1.Models" %>
<!DOCTYPE html> <html>
<head runat="server">
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
<table>
<tr><th>ID</th><th>用户名</th><th>密码</th><th>邮箱</th><th>创建日期</th><th>详细</th></tr>
<%-- <%=ViewData["userinfolist"] %>--%>
<%foreach( var userinfo in (IQueryable<Userinfo>)ViewData["userinfolist"]) {%>
<tr>
<td><%=userinfo.Id %></td>
<td><%=userinfo.username %></td>
<td><%=userinfo.password %></td>
<td><%=userinfo.Emil %></td>
<td><%=userinfo.CreateDate.ToShortDateString() %></td>
<%--<td><a href="/UserInfo/ShowDetail/<%=userinfo.Id %>">详细</a></td>--%>
<td><a href="/UserInfo/ShowDetail/?id=<%=userinfo.Id %>">详细</a></td>
</tr>
<%} %>
</table>
</div>
</body>
</html>
2.2 通过以上方法的时候,因为只有一个值,那么后端方法中如果带有名为id的参数,一样可以接收到该值。并且可以通过request方法获取到前端发来的数据。
2.2.1 get方式传值的第一种后端接收方法。
public ActionResult ShowDetail(int id)
{
return Content(id.ToString());
}
2.2.2 get方式传值的第二种后端接收方法,并且将EF查询的数据传递给视图。
public ActionResult ShowDetail()
{
wangjin2Entities1 db = new wangjin2Entities1();
int id = Convert.ToInt32(Request["id"]);
var userinfo = db.Userinfo.Where<Userinfo>(u => u.Id == id).FirstOrDefault();
ViewData["userInfo"] = userinfo;
return View();
}
MVC查看详细数据【四】的更多相关文章
- ASP.NET MVC Model验证(四)
ASP.NET MVC Model验证(四) 前言 本篇主要讲解ModelValidatorProvider 和ModelValidator两种类型的自定义实现,前者是Model验证提供程序,而Mod ...
- ASP.NET MVC Model元数据(四)
ASP.NET MVC Model元数据(四) 前言 前面的篇幅讲解了Model元数据生成的过程,并没有对Model元数据生成过程的内部和Model元数据结构的详细解释.看完本篇后将会对Model元数 ...
- MVC系列——MVC源码学习:打造自己的MVC框架(四:了解神奇的视图引擎)
前言:通过之前的三篇介绍,我们基本上完成了从请求发出到路由匹配.再到控制器的激活,再到Action的执行这些个过程.今天还是趁热打铁,将我们的View也来完善下,也让整个系列相对完整,博主不希望烂尾. ...
- MVC学习(四)几种分页的实现(3)
在这篇MVC学习(四)几种分页的实现(2)博文中,根据URL中传入的两个参数(页码数,首页.上一页.下一页.末页的标记符)来获得对应的分页数据, 只是传入的参数太多,调用起来不太方便(标记符不能够写错 ...
- ASP.NET MVC Model绑定(四)
ASP.NET MVC Model绑定(四) 前言 前面的篇幅对于Model绑定器IModelBinder以及实现类型.Model绑定器提供程序都作了粗略的讲解,可以把Model绑定器想象成一个大的容 ...
- ASP.NET MVC下的四种验证编程方式[续篇]
在<ASP.NET MVC下的四种验证编程方式>一文中我们介绍了ASP.NET MVC支持的四种服务端验证的编程方式("手工验证"."标注Validation ...
- ASP.NET MVC下的四种验证编程方式
ASP.NET MVC采用Model绑定为目标Action生成了相应的参数列表,但是在真正执行目标Action方法之前,还需要对绑定的参数实施验证以确保其有效性,我们将针对参数的验证成为Model绑定 ...
- ASP.NET MVC下的四种验证编程方式[续篇]【转】
在<ASP.NET MVC下的四种验证编程方式> 一文中我们介绍了ASP.NET MVC支持的四种服务端验证的编程方式(“手工验证”.“标注ValidationAttribute特性”.“ ...
- ASP.NET MVC下的四种验证编程方式【转】
ASP.NET MVC采用Model绑定为目标Action生成了相应的参数列表,但是在真正执行目标Action方法之前,还需要对绑定的参数实施验证以确保其有效 性,我们将针对参数的验证成为Model绑 ...
随机推荐
- python语法_input
input:与用户的交互,返回用户输入的值 注意:input接受的所有数据都为字符串,即便输入的为数字,依然会被当成字符串
- jquery chrome中取select 的值一就返回了
在 <div class="controls"> <select class="span2" data-val="true" ...
- Gym 101981G - Pyramid - [打表找规律][2018-2019 ACM-ICPC Asia Nanjing Regional Contest Problem G]
题目链接:http://codeforces.com/gym/101981/attachments The use of the triangle in the New Age practices s ...
- LeetCode 237 Delete Node in a Linked List 解题报告
题目要求 Write a function to delete a node (except the tail) in a singly linked list, given only access ...
- filter过滤器实现验证跳转_返回验证结果
1. 需求背景 需要对某个请求url进行拦截,模拟是否可以进入某一个接口,如果拦截需要返回数据false,别问我为何不用intercept拦截器. 2. web.xml <filter> ...
- android从IIS/asp.net下载apk文件
解决步骤: 1.web.config中 <configuration> <configSections> ... <section name="rewr ...
- java框架之Hibernate(3)-一对多和多对多关系操作
一对多 例:一个班级可以有多个学生,而一个学生只能属于一个班级. 模型 package com.zze.bean; import java.util.HashSet; import java.util ...
- 【JVM】-NO.111.JVM.1 -【JDK11 HashMap详解-1-hash()剖析】
Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of ...
- GIEC2019第六届全球互联网经济大会北京站震撼来袭!
GIEC2019第六届全球互联网经济大会将于2019年8月26日-27日在北京召开,以“智慧零售数字商业”为主题,将邀请政府官员.企业高管.专家学者共议新形势下如何利人工智能和数字化的商业模式促进零售 ...
- Hbase 读写 原理
客户端读取信息流程 ()client要读取信息,先查询下client 端的cache中是否存在数据,如果存在,刚直接返回数据.如果不存在,则进入到zookeeper,查找到里面的相应数据存在的Root ...