zoukankan      html  css  js  c++  java
  • 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)%>

  • 相关阅读:
    Red Hat Enterprise Linux 4 下安装 Oracle 10g [转]
    C# 轻松实现对窗体(Form)换肤[转]
    广州.NET俱乐部第一次活动安排暨动员书
    庆祝广州.net俱乐部成立暨迎接新成员暨讨论社区活动
    有感于广州.NET俱乐部的成立暨全体动员书
    如何在列表模板中增加一个计算列
    BI有感续
    BI有感
    列表属性查看器WebPart
    广州.NET第一次活动内容及演讲安排(本贴持续更新中)
  • 原文地址:https://www.cnblogs.com/DTWolf/p/4727601.html
Copyright © 2011-2022 走看看