zoukankan      html  css  js  c++  java
  • Action参数和View、Json、重定向

    一、Action

           1、Action参数: 普通参数、Model类、FormCollection

            (1)、普通参数 Index(string name,int age)   框架会自动把用户请求的QueryString 或者Post表单中的值根据参数名字映射对应参数的值,适用于查询参数比较少的情况。

            public ActionResult F3(string name, int age)
            {
                return Content("姓名:" + name + "年龄:" + age);
            }

            (2)、Model类: 这种类叫ViewModel

            public ActionResult Index(IndexModel model)
            {  
                return View(model);
            }

           (3)、 FormCollection ,采用fc["name"]这种方式访问,适用于表单元素不确定的情况,用的比较少。

            public ActionResult F2Show()
            {
                
                return View();
            }
            public ActionResult F2(FormCollection fc)
            {
                string name = fc["name"];
                string age = fc["age"];
                return Content("姓名:" + name + "年龄:" + age);
            }
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>F2Show</title>
    </head>
    <body>
        <form action="~/Test/F2" method="post">
            <input type="text" name="name" />
            <input type="text" name="age" />
            <input type="submit" />
        </form>
    </body>
    </html>

             (4)  一部分是普通参数,一部分Model:

            public ActionResult Index(IndexModel model,string department)
            {  
                return Content(model.Num1+model.Num2+department);
            }

            (5) 添加默认值,默认值参数在最后

            public ActionResult F3(string name, int age=12)
            {
                return Content("姓名:" + name + "年龄:" + age);
            }

           2、 Action 方法不能重载,除了加上[HttpGet] 、[HttpPost] 标记

            [HttpGet]
            public ActionResult F4()
            {
    
                return View();
            }
    
            [HttpPost]
            public ActionResult F4(string name,int age)
            {
    
                return Content("姓名:" + name + "年龄:" + age);
            }
    <body>
        <form action="~/Test/F4" method="post">
            <input type="text" name="name" />
            <input type="text" name="age" />
            <input type="submit" />
        </form>
    </body>

       

    二、View

          1.    

            public ActionResult F2Show()
            {
            //  return View();
                return View("F2"); //找F2.cshtml显示
            }

           2、 显示View的时候传递Model

            public ActionResult F2Show()
            {
                IndexModel model = new IndexModel();
                model.Num1 = 122;
                return View("F2",model); //第二个参数是Model
            }
            public ActionResult F2Show()
            {
                string name = "wang";
                return View("F2",(object)name); //第二个参数是Model
            }
    
            //cshtml页
            @model string
     

    二、ActionResult

         1、 View()  是一个方法,返回值是ViewResult 类型,ViewResult继承自ActionResult

         

    三、Json 

               JsonResult Json(object data) 把data对象序列化成json字符串返回给客户端,并且设置 contentType为“application/json”.

               json 方法是默认禁止Get请求的(主要是为了防止CSRF攻击,ajax请求无法跨域),如果需要调用Get请求: return Json(p1,JsonRequestBehavior.AllowGet)

            public ActionResult JsonTest1()
            {
                var p1 = new { Name = "chen", Age = 12 };
                return Json(p1); //默认Post请求
                
            }
    
            public ActionResult J1()
            {
                return View();
            }
        <script src="~/Scripts/jquery-1.10.2.js"></script>
        <script type="text/javascript">
            $(function () {
                $("#btn1").click(function () {
                    $.ajax({
                        url: "/Test/JsonTest1",
                        type: "post",
                        datatype: "json",
                        success: function (obj) {
                            alert(obj.Name)
                        },
                        error: function () {
                            alert("error")
                        }
    
                    })
                }
                )
            }           
                )
        </script>
          <button id="btn1">点我</button>
    

                    json缺点:

                          1、 日期类型转化成的字符串是“/Date(1532585581810)/”这样格式的,在客户端要用js代码格式化处理麻烦;

                          2、 json字符串中属性的名字和C#中的大小写一样,不符合js中“小写开头,驼峰命名”的习惯;

    四、重定向

              1、 Redirect(url);

              2、RedirectToAction(string actionName,string  controllerName ):其实最终还是拼接成Url,调用Redirect()

              3、 相对路径:             

          "." -- 代表目前所在的目录,相对路径。 
          ".." -- 代表上一层目录,相对路径。 
          "../../" -- 代表的是上一层目录的上一层目录,相对路径。

                  ./ 表示在当前路径下,

                  ../表示在当前路径的上一级路径下.

                 ~/表示当前网站的根目录下.     

               4、Redirect 和return View的区别:

                      (1) Redirect 是让浏览器重定向到新的地址,retun view是让服务器把指定的cshtml的内容运行渲染后给到浏览器;

                      (2) Redirect 浏览器和服务器之间发生了两次交互,return view浏览器和服务器之间发生了1次交互;

                      (3) Redirect是两次请求,所以第一次设置的ViewBag等这些信息,在第二次是取不到的,而View则是在同一个请求中,所以ViewBag信息取不到;

                        (4)   如果用Redirect ,则由于是新的对Controller/Action 的请求,所以对应的Action会被执行到,如果是view,则直接拿某个view去显示,对应的Action是不执行的

                      (5) 什么情况用view?服务器端产生数据,想让一个view去显示,对应的Action是不执行的;

                                什么情况用Redirect? 让浏览器去访问另外一个页面的时候;

    五、其他:

             1、 TempData:

                     一般用于验证码,一次取了之后,在取就没有了

            public ActionResult T1()
            {
                TempData["code"] = "1234";
                return View();
            }
    
            public ActionResult TempData1()
            {
                string code = (string)TempData["code"];
                return Content("code=" + code);
            }

             2、 进行MVC开发的时候,尽量使用****base类,不要用asp.net内核源生的类;这两个类之间没有继承的关系;

  • 相关阅读:
    转转帖.NET.GC 浅谈.net托管程序中的资源释放问题 (转帖)
    [转]来谈谈从专业到更专业
    [转]ASP.NET中多国语言的实现
    [转]内向的人如何建立人际网络
    SQL 入门 (代码)
    SQL 查询 (代码)
    关于学生信息处理小代码
    SQL 函数 (代码)
    SQL 链接 (代码)
    SQL 数据表的相关操作
  • 原文地址:https://www.cnblogs.com/fuyouchen/p/9368875.html
Copyright © 2011-2022 走看看