最近在开发一个项目,用的是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)%>

mvc下是如何传值的的更多相关文章

  1. ASP.NET MVC 下拉框的传值的两种方式

    以前使用WebForm变成时,下拉框传值只需直接在后台绑定代码就可以了.现在我们来看看在MVC中DropDownList是如果和接受从Controller传过来的值的. 第一种:使用DropDownL ...

  2. mvc页面间的传值

    本文大致讲解mvc前后端的传值方式,包括control向view.view向control.以及action向action. 回顾 我们回顾下在ASP.NET WebForms中,页面之间最常用的传值 ...

  3. MVC下压缩输入的HTML内容

    在MVC下如何压缩输出的HTML代码,替换HTML代码中的空白,换行符等字符? 1.首先要了解MVC是如何输出HTML代码到客户端的,先了解下Controller这个类,里面有很多方法,我们需要的主要 ...

  4. ASP.NET MVC下的四种验证编程方式[续篇]

    在<ASP.NET MVC下的四种验证编程方式>一文中我们介绍了ASP.NET MVC支持的四种服务端验证的编程方式("手工验证"."标注Validation ...

  5. ASP.NET MVC下的四种验证编程方式

    ASP.NET MVC采用Model绑定为目标Action生成了相应的参数列表,但是在真正执行目标Action方法之前,还需要对绑定的参数实施验证以确保其有效性,我们将针对参数的验证成为Model绑定 ...

  6. MVC下判断PC和移动端

    MVC下的PC端和移动端,其实没区别,写法都一样,只是有两点才改变了它们 第一点:就是单击这个页面任何地方的时候判断是移动端还是客户端: 第二点:新建手机端区域Areas(简单来说:Areas就相当于 ...

  7. Mvc action间的传值

    1, Mvc action间的传值? TempData["student"] ="123" 在<走入asp.net mvc不归路>系列文章5中,介绍 ...

  8. Response.End()在Webform和ASP.NET MVC下的表现差异

    前几天在博问中看到一个问题--Response.End()后,是否停止执行?MVC与WebForm不一致.看到LZ的描述后,虽然奇怪于为何用Response.End()而不用return方式去控制流程 ...

  9. ASP.NET MVC下的四种验证编程方式[续篇]【转】

    在<ASP.NET MVC下的四种验证编程方式> 一文中我们介绍了ASP.NET MVC支持的四种服务端验证的编程方式(“手工验证”.“标注ValidationAttribute特性”.“ ...

随机推荐

  1. axios简单封装

    写在最前面 新手前端刚刚接触vue,感觉真的好用.项目中需要使用axios,然后学习了一下.借鉴网上一些大佬的经验,现在分享一下axios的简单封装,如果有什么错误的地方,请大家指出. axios安装 ...

  2. Hadoop的datanode超时时间设置

    datanode进程死亡或者网络故障造成datanode无法与namenode通信, namenode不会立即把该节点判定为死亡,要经过一段时间,这段时间暂称作超时时长. HDFS默认的超时时长为10 ...

  3. 洛谷——P3370 【模板】字符串哈希

    题目描述 如题,给定N个字符串(第i个字符串长度为Mi,字符串内包含数字.大小写字母,大小写敏感),请求出N个字符串中共有多少个不同的字符串. 友情提醒:如果真的想好好练习哈希的话,请自觉,否则请右转 ...

  4. 洛谷 P2970 [USACO09DEC]自私的放牧Selfish Grazing

    P2970 [USACO09DEC]自私的放牧Selfish Grazing 题目描述 Each of Farmer John's N (1 <= N <= 50,000) cows li ...

  5. Redis加入Centos Linux开机启动

    Redis加入Centos Linux开机启动 网上有很多redis在linux下自动启动的例子,实现的方式很多,很多都是参考一个老外流传出来启动的例子,其实直接使用是不行,而且有很多地方有一些语法错 ...

  6. Android 最火的高速开发框架xUtils

    Github下载地址:https://github.com/wyouflf/xUtils xUtils简单介绍 xUtils 包括了非常多有用的Android工具. xUtils 最初源于Afinal ...

  7. oracle学习 第一章 简单的查询语句 ——03

    1.1最简单的查询语句 例 1-1 SQL> select * from emp; 例 1-1 结果 这里的 * 号表示全部的列.它与在select 之后列出全部的列名是一样的.查询语句以分号( ...

  8. 安卓实训第四天--基于HttpClient来完毕数据在server和设备间的交互。

    上午:老师首先回想了昨天作业. 首先在安卓project中的TOOLS文件里,解析字节流那里,不用改变.而是把server端的编码方式变为UTF-8,然后将在安卓project的LoginActivi ...

  9. 使用MyEclipse编写Java程序

    MyEclipse是非常实用的一款Java程序开发工具,主要用于Java.Java EE以及移动应用的开发.MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持相当不错. My ...

  10. 卸载虚拟机时错误关闭了某个服务,使得电脑除了chrome浏览器都不能联网

    不是中毒,也不需要重装系统,可能是关闭了svchost服务 以下为搜索到的答案,亲测第一种好用 最近两周在三班四班有5位同学电脑7次出现网络故障,表现为能连上锐捷.DNS正常却不能上网,其中在我自己的 ...