• MVC查看详细数据【四】


      一、本篇文章主要讲解点击详细,将主键id的值传递到后端,或者将多个值传递给后台的三种方式,并且通过id的值在数据库中查找到相对应的数据,赋值给viewData视图。

    1. 第一种将主键id的值传递给后端的方式。

    首先我们来看一下在MVC项目中,RouteConfig.cs文件夹下规定的路由规则。注意红色区域的代码。规定了路由规则是,控制器 视图名 / id的值。就是指可以带一个额外的参数。

     1 namespace MvcApplication1
     2 {
     3     public class RouteConfig
     4     {
     5         public static void RegisterRoutes(RouteCollection routes)
     6         {
     7             routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
     8 
     9             routes.MapRoute(
    10                 name: "Default",
    11                 url: "{controller}/{action}/{id}",   
    12                 defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    13             );
    14         }
    15     }
    16 }

    1.1 前端代码如下: 以下的href=“/UserInfo/ShowDetail/1”    ,当发送给ShowDetail页面的时候,如果ShowDetail方法的参数名为id,那么会自动接收该值。

     1 <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
     2 <%@ Import Namespace="MvcApplication1.Models" %>   
     3 <!DOCTYPE html>
     4 
     5 <html>
     6 <head runat="server">
     7     <meta name="viewport" content="width=device-width" />
     8     <title>Index</title>
     9 </head>
    10 <body>
    11     <div>
    12         <table>
    13             <tr><th>ID</th><th>用户名</th><th>密码</th><th>邮箱</th><th>创建日期</th><th>详细</th></tr>
    14           <%--  <%=ViewData["userinfolist"] %>--%>
    15             <%foreach( var userinfo in (IQueryable<Userinfo>)ViewData["userinfolist"]) {%>
    16                 <tr>
    17                     <td><%=userinfo.Id %></td>
    18                     <td><%=userinfo.username %></td>
    19                     <td><%=userinfo.password %></td>
    20                     <td><%=userinfo.Emil %></td>
    21                     <td><%=userinfo.CreateDate.ToShortDateString() %></td>
    22                     <td><a href="/UserInfo/ShowDetail/<%=userinfo.Id %>">详细</a></td>
    23                 </tr>
    24             <%} %>
    25         </table>
    26     </div>
    27 </body>
    28 </html>

    1.2 后端接收的代码很简单,直接使用id便可,这样就是最简单的传递单一参数到后端的方法。

    1  public ActionResult ShowDetail(int id)
    2         {
    3             return Content(id.ToString());
    4         }

    2.1 第二种传递参数到后端的方法,并且希望可以传递多个参数的,其实也就是通过get方式传参。

     1 <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
     2 <%@ Import Namespace="MvcApplication1.Models" %>   
     3 <!DOCTYPE html>
     4 
     5 <html>
     6 <head runat="server">
     7     <meta name="viewport" content="width=device-width" />
     8     <title>Index</title>
     9 </head>
    10 <body>
    11     <div>
    12         <table>
    13             <tr><th>ID</th><th>用户名</th><th>密码</th><th>邮箱</th><th>创建日期</th><th>详细</th></tr>
    14           <%--  <%=ViewData["userinfolist"] %>--%>
    15             <%foreach( var userinfo in (IQueryable<Userinfo>)ViewData["userinfolist"]) {%>
    16                 <tr>
    17                     <td><%=userinfo.Id %></td>
    18                     <td><%=userinfo.username %></td>
    19                     <td><%=userinfo.password %></td>
    20                     <td><%=userinfo.Emil %></td>
    21                     <td><%=userinfo.CreateDate.ToShortDateString() %></td>
    22                     <%--<td><a href="/UserInfo/ShowDetail/<%=userinfo.Id %>">详细</a></td>--%>
    23                     <td><a href="/UserInfo/ShowDetail/?id=<%=userinfo.Id %>">详细</a></td>
    24                 </tr>
    25             <%} %>
    26         </table>
    27     </div>
    28 </body>
    29 </html>

    2.2 通过以上方法的时候,因为只有一个值,那么后端方法中如果带有名为id的参数,一样可以接收到该值。并且可以通过request方法获取到前端发来的数据。

    2.2.1    get方式传值的第一种后端接收方法。

    1 public ActionResult ShowDetail(int id)
    2         {
    3             return Content(id.ToString());
    4         }

    2.2.2  get方式传值的第二种后端接收方法,并且将EF查询的数据传递给视图。

    1 public ActionResult ShowDetail()
    2         {
    3             wangjin2Entities1 db = new wangjin2Entities1();
    4             int id = Convert.ToInt32(Request["id"]);
    5             var userinfo = db.Userinfo.Where<Userinfo>(u => u.Id == id).FirstOrDefault();
    6             ViewData["userInfo"] = userinfo;
    7             return View();
    8         }
  • 相关阅读:
    第二章:(2)Dubbo 常用配置之 启动时检查
    第二章:(1)Dubbo 配置
    2019版:第三章:(6)Redis 五大数据类型 之 ZSet
    2019版:第三章:(1)Redis 五大数据类型与 key
    2019版:第三章:(2)Redis 五大数据类型 之 String
    2019版:第四章:Redis 的配置文件
    2019版:第三章:(5)Redis 五大数据类型 之 Hash
    adm部署的k8s 修改端口范围(默认为3000032767)
    Android开发日记1
    Activity 利用Intent 转换到另一个Activity
  • 原文地址:https://www.cnblogs.com/wangjinya/p/10655519.html
Copyright © 2020-2023  润新知