mvc下是如何传值的

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

时间: 2024-11-14 11:43:35

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

ASP.NET MVC 下拉框传值方式

在MVC中使用DropDownList接受从Controller传过来的值的方式: 控制器代码:  public ActionResult Index()         {             dk.bll.edu.EduBll<dk.model.edu.SetupRecord> setUpBll = new dk.bll.edu.EduBll<dk.model.edu.SetupRecord>();             List<dk.model.edu.Setu

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

以前使用WebForm变成时,下拉框传值只需直接在后台绑定代码就可以了.现在我们来看看在MVC中DropDownList是如果和接受从Controller传过来的值的. 第一种:使用DropDownList 控制器代码: public ActionResult Index() { //1.1查询YzSeriesEntity的数据 List<Model.YzSeriesEntity> seriesList = seriesBLL.LoadEnities().ToList(); //1.2将YzS

MVC下拉框的传值的两种方式

http://www.cnsendblog.com/index.php/?p=137GPS平台.网站建设.软件开发.系统运维,找森大网络科技!http://cnsendnet.taobao.com 以前使用WebForm变成时,下拉框传值只需直接在后台绑定代码就可以了.现在我们来看看在MVC中DropDownList是如果和接受从Controller传过来的值的. 第一种:使用DropDownList 控制器代码: 1. public ActionResult Index() 2. { 3. 4

ASP.NET MVC view与controller传值方式

1: ViewData传值方式ViewData的生命周期和View相同, 只对当前View有效.   ViewData["zd"] = dfdfd2:TempData传值方式   可以跨Action传递   TempData的数据至多只能经过一次Controller传递, 并且每个元素至多只能被访问一次,     例如一个用法为,抛出一个异常.跳转到error页面public ActionResult Index3(){      TempData["tempIndex&qu

mvc 下拉框赋值

以前使用WebForm变成时,下拉框传值只需直接在后台绑定代码就可以了.现在我们来看看在MVC中DropDownList是如果和接受从Controller传过来的值的. 第一种:使用DropDownList 控制器代码: public ActionResult Index() { //1.1查询YzSeriesEntity的数据 List<Model.YzSeriesEntity> seriesList = seriesBLL.LoadEnities().ToList(); //1.2将YzS

mvc页面间的传值

本文大致讲解mvc前后端的传值方式,包括control向view.view向control.以及action向action. 回顾 我们回顾下在ASP.NET WebForms中,页面之间最常用的传值方式,有以下几种: a). QueryString(也叫URL传值) b). Session c). Cookie d). Application e). Server.Transfer 这里不再讲述这几种传值方式的用法和利弊,在本章后面将用MVC的传值方式与之对比,并展开一些探讨.(webform

MVC下微信企业号网页应用开发调用JSSDK接口不成功问题

在MVC下进行企业微信里的网页应用开发,前台页面中为了调用图像接口,使用了JSSDK.按照官方文档进行了正确配置. 现象:WEB开发工具调试一切正常,但从手机企业微信应用进入页面后接口调用无效(这个页面是从一级页面链接过来的),开了调试模式后,显示config:ok.说明配置无误.经过反复检查,终于发现问题所在. 原因:在一级页面(http://xx.xxx.xxx/main/index)中的链接是使用htmlhelper来写的,即@Html.ActionLink("测试接口",&qu

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

在<ASP.NET MVC下的四种验证编程方式>一文中我们介绍了ASP.NET MVC支持的四种服务端验证的编程方式("手工验证"."标注ValidationAttribute特性"."让数据类型实现IValidatableObject或者IDataErrorInfo"),那么在ASP.NET MVC框架内部是如何提供针对这四种不同编程方式的支持的呢?接下来我们就来聊聊这背后的故事. 一.ModelValidator与ModelVal

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

原文:ASP.NET MVC下的四种验证编程方式 ASP.NET MVC采用Model绑定为目标Action生成了相应的参数列表,但是在真正执行目标Action方法之前,还需要对绑定的参数实施验证以确保其有效性,我们将针对参数的验证成为Model绑定.总地来说,我们可以采用4种不同的编程模式来进行针对绑定参数的验证. 目录 一.手工验证绑定的参数 二.使用ValidationAttribute特性 三.让数据类型实现IValidatableObject接口 四.让数据类型实现IDataError