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绑 ...
随机推荐
- Linux网络 - 数据包的接收过程(转)
https://segmentfault.com/a/1190000008836467
- kubernetes 1.3 使用skydns + kube2dns +etcd部署DNS服务器
1. 直接从Docker中拉取skydns,kube2dns,etcd容器,放到一个Pod中 kube2sky:1.14 etcd:2.0.9 skydns-amd64 2. 创建RC apiVers ...
- ES6 迭代器
Iterator Iterator 是 ES6 引入的一种新的遍历机制,迭代器有两个核心概念: 迭代器是一个统一的接口,它的作用是使各种数据结构可被便捷的访问,它是通过一个键为Symbol.itera ...
- SpringBoot整合Swagger2
相信各位在公司写API文档数量应该不少,当然如果你还处在自己一个人开发前后台的年代,当我没说,如今为了前后台更好的对接,还是为了以后交接方便,都有要求写API文档. 手写Api文档的几个痛点: 文档需 ...
- python框架之Django(15)-contenttype模块
假如有一个书城系统,需要给作者和书籍加上评论功能.如果给每个表单独建一个评论表,那么我们以后要扩展其它模块评论功能的时候,还需要随之新建一张评论表,会显得很冗余.对于这种情况,Django 给我们提供 ...
- 小程序图表wx-chart
下载地址 https://github.com/xiaolin3303/wx-charts 使用步骤: 一.解压后,把dist里面的wxcharts.js或者wxcharts-min.js放在小程序的 ...
- ubuntu 使用dpkg手动安装deb包时发生循环依赖的解决办法
将循环依赖的所有包放到同一个命令行里一起安装,如: sudo dpkg -i libnss3-nssdb_3.28.4-0ubuntu0.14.04.4_all.deb libnss3_3.28.4- ...
- [js]js的惰性声明, js中声明过的变量(预解释),后在不会重新声明了
js的惰性声明, js中声明过的变量(预解释),后在不会重新声明了 fn(); // 声明+定义 js中声明过一次的变量,之后在不会重新声明了 function fn() { console.log( ...
- 131A
#include <stdio.h> #include <string.h> #include <stdbool.h> #define MAXSIZE 105 in ...
- 【UML】NO.52.EBook.5.UML.1.012-【UML 大战需求分析】- 交互概览图(Interaction Overview Diagram)
1.0.0 Summary Tittle:[UML]NO.52.EBook.1.UML.1.012-[UML 大战需求分析]- 交互概览图(Interaction Overview Diagram) ...