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绑 ...
随机推荐
- JDBC事务(三)ThreadLocal绑定Connection
处理一个请求即开启一个线程,在三层中,执行三层中的方法都是用的同一个线程. 我们开启一个事务,使用conn.setAutoCommit(false); conn应该属于ado层,不应该出现在servi ...
- Spring Data JPA框架
1.前言 扔一个 spring data jpa 的代码,可运行,后续补充博客内容. 环境:eclipse + tomcat8 2.部分截图 3.源码 https://gitee.com/niceyo ...
- docker小结
docker命令汇总 https://www.cnblogs.com/andy9468/p/10762742.html docker概述 https://www.cnblogs.com/andy946 ...
- linux iptables 防火墙简介
iptables防火墙简介 Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的安全自由的基于包过滤的防火墙工具,它的功能十分强大,使用非 ...
- Python时间、日期、时间戳之间的转换
一.字符串与为时间字符串之间的互相转换 方法:time模块下的strptime方法 a = "2012-11-11 23:40:00" # 字符串转换为时间字符串 import t ...
- vue-cli 搭建的项目关闭 eslint
一般不会关闭eslint,基于接手的代码用eslint的时候报错太多,强迫症的人实在忍受不了报错,先实行关闭: 1.在build 下面的 webpack.base.conf.js 找到 module- ...
- eclipse打包jar包
项目右键 选择Export 选择java文件夹 选择 JAR file选择包,类,选择导出路径然后 Finish
- golang schedule crash
golang 起超过100W的goroutine就会crash,这个算不算是个bug? 2036119xxxxpanic: inconsistent poll.fdMutex goroutine 20 ...
- Python基础(九) type元类
python元类:type() 元类是python高阶语法. 合理的使用可以减少大量重复性的代码. 元类实际上做了以下三方面的工作: 干涉创建类的过程 修改类 返回修改之后的类 为什么使用元类? ...
- 关于12C中optimizer_adaptive_features参数介绍
optimizer_adaptive_features参数在OLAP数据仓库环境中可以获得较好的效果,实际在重上传轻查询的OLTP系统上,可以关闭这项新功能. 其主要功能是为了在语句执行过程中实时收集 ...