mvc下是如何传值的

来源:互联网 发布:随州seo服务 编辑:程序博客网 时间:2024/04/26 19:24
   最近在开发一个项目,用的是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); %>

 或

<formid="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 = newDictionary<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是一个数据实体类型如:

publicclass ResourceBaseEditModel

               {

                 publicGuid 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)%>

原创粉丝点击