博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mvc下是如何传值的
阅读量:5304 次
发布时间:2019-06-14

本文共 2491 字,大约阅读时间需要 8 分钟。

 最近在开发一个项目,用的是mvc框架,现将mvc会用到的常用传值方法总结如下:

在讲传递参数方法之前,先简单介绍一下MVC路由及运行机制。

    首先,Web 浏览器向服务器发送一条URL 请求,如。

    其次,请求被ASP. NET MVC 的路由映射系统获取, 并按照映射规则, 解析出 ControllerName,ActionName 和Parameters;

    再次,到Controllers 目录下找到ControllerNameController.cs 类, 并在这个类中找到与 ActionName 同名的方法,将Parameters 作为参数传给这个方法;

    最后,Action 方法开始执行,完成后将返回相应视图

 

以下是四种传值方式,根据不同情况下具体运用

1.         Request

 

1.  Request.Form:获取以POST方式提交的数据(接收Form提交来的数据)

View视图下:post方式提交数据

<% Html.BeginForm("LogOnMothed ", " User ", FormMethod.Post); %>

 或

<form id="login" action="/User/LogOnMothed" method="post">

 

控制器下:

Request.form[“”].tostring();

 

2.  Request.QueryString:获取地址栏参数(以及以GET方式提交的数据)

.aspx页面代码  

  $(document).ready(function () {

getJOSNResourceBaseList();

}

   .js文件代码

       <script type=”text/javascript”>

     Function getJsonResourceBaseList()

{

Var param={param1:””,param2:””,param3:””};

Param.param1=”123”;

Param.param2=”456”;

Param.param3=”789”;

                   $.getJSON("/ResourceBase/getJOSNResourceBaseList", param, function (data) {

 //具体方法操作

}

         </script>

.controller文件中调用

       然后再ResourceBaseController.cs下的getJOSNResourceBaseList方法下QueryString获取参数:

    Request.QueryString[“param1”];

    Request.QueryString[“param2”];

    Request.QueryString[“param3”];

 

2.Dictionary

在控制器赋值:

     Dictionary<string, object> userModel = new Dictionary<string, object>();

userModel.Add("UserID", “123”);

           userModel.Add("UserName", “456”);

        ViewData["UserData"] = userModel;

 

在视图页面取值:

       <% Dictionary<string, object> UserModel = ViewData["UserData"] as Dictionary<string, object>; %>

       <%=Html.TextBox("txtUserName", UserModel["UserName"].ToString())%>

 

接下来讲两种强类型数据的传递方法, ViewDta  和 Dynamic

说明:ResourceBaseEditModelService.GetEditModelByID 返回类型为ResourceBaseEditModel

      ResourceBaseEditModel 是一个数据实体类型如:

public class ResourceBaseEditModel

               {

                 public Guid Id{ get; set; }

               }

 

3.     ViewData  把强类型的ViewData对象从控制器传递给视图,这里只讲强类型对象的传递

   在控制器中赋值:

  ViewData["editModel"] = ResourceBaseEditModelService.GetEditModelByID(TempDeviceID.Value);

 

在视图页面取值:

     <% ResourceBaseEditModel localModel = ViewData["Local"] as  ResourceBaseEditModel; %>

 

      <%=Html.TextBox("txtDeviceID",  localModel.Id%>

 

4.  Dynamic

在控制器赋值:

  ResourceBaseEditModelmodel = ResourceBaseEditModelService.GetEditModelByID(TempDeviceID.Value);

            dynamic viewModel = new ExpandoObject();

            viewModel.UserID = model.Id;

            viewModel.UserName = model.name;

     return View(viewModel);

 

在视图页面取值:

      <%@ Page Language="C#"  Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

      <%=Html.TextBox("txtUserName", (string)Model.name)%>

      <%=Html.TextBox("txtUserId", (string)Model.Id)%>

转载于:https://www.cnblogs.com/DTWolf/p/4727601.html

你可能感兴趣的文章
Hallo wolrd!
查看>>
16下学期进度条2
查看>>
Could not resolve view with name '***' in servlet with name 'dispatcher'
查看>>
Chapter 3 Phenomenon——12
查看>>
C语言中求最大最小值的库函数
查看>>
和小哥哥一起刷洛谷(1)
查看>>
jquery对id中含有特殊字符的转义处理
查看>>
遇麻烦,Win7+Ubuntu12.10+Archlinux12.10 +grub
查看>>
SqlBulkCopy大批量导入数据
查看>>
pandas 修改指定列中所有内容
查看>>
「 Luogu P2285 」打鼹鼠
查看>>
lua语言入门之Sublime Text设置lua的Build System
查看>>
vue.js基础
查看>>
电脑的自带图标的显示
查看>>
[转载] redis 的两种持久化方式及原理
查看>>
C++ 删除字符串的两种实现方式
查看>>
ORA-01502: 索引'P_ABCD.PK_WEB_BASE'或这类索引的分区处于不可用状态
查看>>
Java抽象类和接口的比较
查看>>
开发进度一
查看>>
MyBaits学习
查看>>