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

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

    首先,Web 浏览器向服务器发送一条URL 请求,如http://HostName/ControllerName/ActionName/Parameters

其次,请求被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)%>

最新文章

  1. linux建立文件夹软连接
  2. linux下git的简单运用
  3. 深入理解java虚拟机(4)---类加载机制
  4. JSP专题
  5. EF code first 生成edmx文件
  6. ListView的局部刷新
  7. github 上传文件
  8. 【Python3之常用模块】
  9. 使用VS2013 + EF6 + .NET4.5 连接Mysql数据库
  10. 【epubcfi函数generateRangeFromCfi和generateCfiFromRange】两者的区别和适用性,以及另一种实现
  11. 二:C#对象、集合、DataTable与Json内容互转示例;
  12. HDOJ 5667 Sequence//费马小定理 矩阵快速幂
  13. 二十一、Linux 进程与信号---进程资源限制
  14. Android开发 :androidstudio device offline
  15. Python基础之Python的变量、常量
  16. gridview 显示数据库中的超链接
  17. python使用requests时报错requests.exceptions.SSLError: HTTPSConnectionPool
  18. Oracle top 查询TOP SQL
  19. Linux下串口操作之数据拼接
  20. 颜色ARGB的混合

热门文章

  1. [terry笔记]11gR2_dataguard_保护模式切换
  2. R语言学习(一)前言
  3. Linux 环境下/etc/profile和/etc/profile.d 的区别
  4. bzoj 1040 1040: [ZJOI2008]骑士
  5. 基于Masonry自己主动计算cell的高度
  6. TreeMap集合怎样依照Value进行排序
  7. tomcatserver管理界面username和password忘记
  8. Android组件系列----ContentProvider内容提供者【1】
  9. 3.IntelliJ IDEA 使用详解
  10. 二维码扫描ZXing简化