首页 > 代码库 > MVC模式下值的传递

MVC模式下值的传递

      公司项目转用MVC开发,故学习总结一下mvc会用到的常用传值方法:

      正如大家都熟悉的,MVC路由及运行机制是:

      首先,Web 浏览器向服务器发送一条URL 请求,如http://localhost:10080/Home/Register,也就是(http://HostName/ControllerName/ActionName/Parameters)。

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

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

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

      经查阅学习到四种传值方式,根据不同情况下具体运用

一、Request

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

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

<% Html.BeginForm("Register", "Home", FormMethod.Post); %>

<form id="register" action="/Home/Register" method="post">

(2)Controller控制器下:Request获取数据

Request.Form[""].ToString();

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

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>

(1).aspx页面代码

$(document).ready(function () {

      getJOSNResourceBaseList();

}

(2).Controller文件中获取JS方法中的参数(ResourceBaseController下的getJOSNResourceBaseList方法)

Request.QueryString["param1"];

Request.QueryString["param2"];

Request.QueryString["param3"];

3. Dictionary

(1) 在控制器赋值:

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

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

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

        ViewData["UserData"] = userModel;

(2)在视图页面取值:

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

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

 

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

注意:ResourceBaseEditModelService.GetEditModelByID返回类型为ResourceBaseEditModel

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

         public  class  ResourceBaseModel

         { public Guid Id{ get; set;}   }

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

(1)在控制器中赋值:

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

(2)在视图页面取值:

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

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

5.  Dynamic

(1)在控制器赋值:

     ResourceBaseEditModel model = ResourceBaseEditModelService.GetEditModelByID(TempDeviceID.Value);
                  dynamic viewModel = new ExpandoObject();
                  viewModel.UserID = model.Id;
                  viewModel.UserName = model.name;
                  return View(viewModel);

(2)在视图页面取值:

<% @Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
      <%= Html.TextBox("txtUserName", (string)Model.name) %>
      <%= Html.TextBox("txtUserId", (string)Model.Id) %>

MVC模式下值的传递