返璞归真 asp.net mvc (3) – Controller/Action

[索引页]
[源码下载]

返璞归真 asp.net mvc (3) – Controller/Action

作者:webabcd

介绍
asp.net mvc 之 Controller 和 Action

  • Controller 类必须以字符串 “Controller” 做类名称的结尾,字符串
    Controller 此前的字符串为 Controller 的名目,类中的方法名为 Action
    的名号
  • Action 可以没有再次来到值。假设 Action 要有重返值的话,其品种必须是
    ActionResult

示例
1、Controller/Action
ControllerDemoController.cs

图片 1using System;
图片 2using System.Collections.Generic;
图片 3using System.Linq;
图片 4using System.Web;
图片 5using System.Web.Mvc;
图片 6using System.Web.Mvc.Ajax;
图片 7
图片 8using System.IO;
图片 9
图片 10namespace MVC.Controllers
图片 11图片 12图片 13{
图片 14图片 15    /**//// <summary>
图片 16    /// Controller 类必须以字符串 “Controller” 做类名称的结尾,字符串 Controller 往日的字符串为 Controller 的称号,类中的方法名为 Action 的称号
图片 17    /// </summary>
图片 18    public class ControllerDemoController : Controller
图片 19图片 20    图片 21{
图片 22        // [NonAction] – 当前形式仅为一般方法,不解析为 Action
图片 23        // [AcceptVerbs(HttpVerbs.Post)] – 表明 Action 所对应的 http 方法
图片 24
图片 25图片 26        /**//// <summary>
图片 27        /// Action 可以没有重临值
图片 28        /// </summary>
图片 29        public void Void()
图片 30图片 31        图片 32{
图片 33            Response.Write(string.Format(“<span style=’color: red’>{0}</span>”, “void”));
图片 34        }
图片 35
图片 36图片 37        /**//// <summary>
图片 38        /// 借使 Action 要有再次来到值的话,其品种必须是 ActionResult
图片 39        /// EmptyResult – 空结果
图片 40        /// </summary>
图片 41        public ActionResult EmptyResult()
图片 42图片 43        图片 44{
图片 45            Response.Write(string.Format(“<span style=’color: red’>{0}</span>”, “EmptyResult”));
图片 46            return new EmptyResult();
图片 47        }
图片 48
图片 49图片 50        /**//// <summary>
图片 51        /// Controller.Redirect() – 转向一个指定的 url 地址
图片 52        /// 再次回到类型为 RedirectResult
图片 53        /// </summary>
图片 54        public ActionResult RedirectResult()
图片 55图片 56        图片 57{
图片 58            return base.Redirect(“~/ControllerDemo/ContentResult”);
图片 59        }
图片 60
图片 61图片 62        /**//// <summary>
图片 63        /// Controller.RedirectToAction() – 转向到指定的 Action
图片 64        /// 重返类型为 RedirectToRouteResult
图片 65        /// </summary>
图片 66        public ActionResult RedirectToRouteResult()
图片 67图片 68        图片 69{
图片 70            return base.RedirectToAction(“ContentResult”);
图片 71        }
图片 72
图片 73图片 74        /**//// <summary>
图片 75        /// Controller.Json() – 将点名的靶子以 JSON 格式输出出来
图片 76        /// 重返类型为 JsonResult
图片 77        /// </summary>
图片 78        public ActionResult JsonResult(string name)
图片 79图片 80        图片 81{
图片 82            System.Threading.Thread.Sleep(1000);
图片 83
图片 84图片 85            var jsonObj = new 图片 86{ Name = name, Age = new Random().Next(20, 31) };
图片 87            return base.Json(jsonObj);
图片 88        }
图片 89
图片 90图片 91        /**//// <summary>
图片 92        /// Controller.JavaScript() – 输出一段指定的 JavaScript 脚本
图片 93        /// 重回类型为 JavaScriptResult
图片 94        /// </summary>
图片 95        public ActionResult JavaScriptResult()
图片 96图片 97        图片 98{
图片 99            return base.JavaScript(“alert(‘JavaScriptResult’)”);
图片 100        }
图片 101
图片 102图片 103        /**//// <summary>
图片 104        /// Controller.Content() – 输出一段指定的情节
图片 105        /// 重回类型为 ContentResult
图片 106        /// </summary>
图片 107        public ActionResult ContentResult()
图片 108图片 109        图片 110{
图片 111            string contentString = string.Format(“<span style=’color: red’>{0}</span>”, “ContentResult”);
图片 112            return base.Content(contentString);
图片 113        }
图片 114
图片 115图片 116        /**//// <summary>
图片 117        /// Controller.File() – 输出一个文书(字节数组)
图片 118        /// 重临类型为 FileContentResult
图片 119        /// </summary>
图片 120        public ActionResult FileContentResult()
图片 121图片 122        图片 123{
图片 124            FileStream fs = new FileStream(Request.PhysicalApplicationPath + “Content/loading.gif”, FileMode.Open);
图片 125            int length = (int)fs.Length;
图片 126            byte[] buffer = new byte[length];
图片 127            fs.Read(buffer, 0, length);
图片 128            fs.Close();
图片 129
图片 130            return base.File(buffer, “image/gif”);
图片 131        }
图片 132
图片 133        // <summary>
图片 134图片 135        /**//// Controller.File() – 输出一个文本(文件地点)
图片 136        /// 重返类型为 FileContentResult
图片 137        /// </summary>
图片 138        public ActionResult FilePathResult()
图片 139图片 140        图片 141{
图片 142            var path = Request.PhysicalApplicationPath + “Content/loading.gif”;
图片 143            return base.File(path, “image/gif”);
图片 144        }
图片 145
图片 146        // <summary>
图片 147图片 148        /**//// Controller.File() – 输出一个文件(文件流)
图片 149        /// 重回类型为 FileContentResult
图片 150        /// </summary>
图片 151        public ActionResult FileStreamResult()
图片 152图片 153        图片 154{
图片 155            FileStream fs = new FileStream(Request.PhysicalApplicationPath + “Content/loading.gif”, FileMode.Open);
图片 156
图片 157            return base.File(fs, @”image/gif”);
图片 158        }
图片 159
图片 160图片 161        /**//// <summary>
图片 162        /// HttpUnauthorizedResult – 响应给客户端错误代码 401(未经授权浏览状态),假如程序启用了 Forms 验证,并且客户端从未此外身份票据,则会跳转到指定的登录页
图片 163        /// </summary>
图片 164        public ActionResult HttpUnauthorizedResult()
图片 165图片 166        图片 167{
图片 168            return new HttpUnauthorizedResult();
图片 169        }
图片 170
图片 171图片 172        /**//// <summary>
图片 173        /// Controller.PartialView() – 寻找 View ,即 .ascx 文件
图片 174        /// 重临类型为 PartialViewResult
图片 175        /// </summary>
图片 176        public ActionResult PartialViewResult()
图片 177图片 178        图片 179{
图片 180            return base.PartialView();
图片 181        }
图片 182
图片 183图片 184        /**//// <summary>
图片 185        /// Controller.View() – 寻找 View ,即 .aspx 文件
图片 186        /// 重回类型为 ViewResult
图片 187        /// </summary>
图片 188        public ActionResult ViewResult()
图片 189图片 190        图片 191{
图片 192            // 如若没有点名 View 名称,则寻找与 Action 名称一致的 View
图片 193            return base.View();
图片 194        }
图片 195
图片 196图片 197        /**//// <summary>
图片 198        /// 用于演示处理 JSON 的
图片 199        /// </summary>
图片 200        public ActionResult JsonDemo()
图片 201图片 202        图片 203{
图片 204            return View();
图片 205        }
图片 206
图片 207图片 208        /**//// <summary>
图片 209        /// 用于演示上传文件的
图片 210        /// </summary>
图片 211        public ActionResult UploadDemo()
图片 212图片 213        图片 214{
图片 215            return View();
图片 216        }
图片 217
图片 218图片 219        /**//// <summary>
图片 220        /// 用于演示 Get 格局调用 Action
图片 221        /// id 是依照路由过来的;param1和param2是遵照参数过来的
图片 222        /// </summary>
图片 223        [AcceptVerbs(HttpVerbs.Get)]
图片 224        public ActionResult GetDemo(int id, string param1, string param2)
图片 225图片 226        图片 227{
图片 228            ViewData[“ID”] = id;
图片 229            ViewData[“Param1”] = param1;
图片 230            ViewData[“Param2”] = param2;
图片 231
图片 232            return View();
图片 233        }
图片 234
图片 235图片 236        /**//// <summary>
图片 237        /// 用于演示 Post 模式调用 Action
图片 238        /// </summary>
图片 239        /// <remarks>
图片 240        /// 可以为参数添加申明,如:[Bind(Include = “xxx”)] – 只绑定指定的习性(参数),六个用逗号隔开
图片 241        /// [Bind(Exclude = “xxx”)] – 不绑定指定的性能(参数),三个用逗号隔开
图片 242        /// [Bind] 注解同样可以成效于 class 上
图片 243        /// </remarks>
图片 244        [AcceptVerbs(HttpVerbs.Post)]
图片 245        public ActionResult PostDemo(FormCollection fc)
图片 246图片 247        图片 248{
图片 249            ViewData[“Param1”] = fc[“param1”];
图片 250            ViewData[“Param2”] = fc[“param2”];
图片 251
图片 252            // 也足以用 Request.Form 格局获取 post 过来的参数
图片 253
图片 254            // Request.Form 内的参数也会炫耀到同名参数。例如,也可用如下形式赢得参数  
图片 255            // public ActionResult PostDemo(string param1, string param2)
图片 256
图片 257            return View(“GetDemo”);
图片 258        }
图片 259
图片 260图片 261        /**//// <summary>
图片 262        /// 处理上传文件的 Action
图片 263        /// </summary>
图片 264        /// <param name=”file1″>与传过来的 file 类型的 input 的 name 相对应</param>
图片 265        [AcceptVerbs(HttpVerbs.Post)]
图片 266        public ActionResult UploadFile(HttpPostedFileBase file1)
图片 267图片 268        图片 269{
图片 270            // Request.Files – 获取需要上传的文书。当然,其也会自动映射到同名参数
图片 271            // HttpPostedFileBase hpfb = Request.Files[0] as HttpPostedFileBase;
图片 272
图片 273            string targetPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + “Upload”, Path.GetFileName(file1.FileName));
图片 274            file1.SaveAs(targetPath);
图片 275
图片 276            return View(“UploadDemo”);
图片 277        }
图片 278    }
图片 279}
图片 280

2、Get 形式和 Post 模式调用 Controller 的 Demo
GetDemo.aspx

图片 281图片 282<%图片 283@ Page Title=”” Language=”C#” MasterPageFile=”~/Views/Shared/Site.Master” Inherits=”System.Web.Mvc.ViewPage” %>
图片 284
图片 285<asp:Content ID=”Content1″ ContentPlaceHolderID=”TitleContent” runat=”server”>
图片 286    GetDemo
图片 287</asp:Content>
图片 288<asp:Content ID=”Content2″ ContentPlaceHolderID=”MainContent” runat=”server”>
图片 289    <h2>
图片 290        GetDemo</h2>
图片 291    <div>
图片 292        <%= ViewData[“ID”] %></div>
图片 293    <div>
图片 294        <%= ViewData[“Param1”] %></div>
图片 295    <div>
图片 296        <%= ViewData[“Param2”] %></div>
图片 297        
图片 298    <form action=”/ControllerDemo/PostDemo” method=”post”>
图片 299    <input id=”param1″ name=”param1″ />
图片 300     
图片 301    <input id=”param2″ name=”param2″ />
图片 302     
图片 303    <input type=”submit” value=”submit” />
图片 304    </form>
图片 305</asp:Content>
图片 306

3、处理 JSON 的 Demo
JsonDemo.aspx

图片 307图片 308<%图片 309@ Page Title=”” Language=”C#” MasterPageFile=”~/Views/Shared/Site.Master” Inherits=”System.Web.Mvc.ViewPage” %>
图片 310
图片 311<asp:Content ID=”Content1″ ContentPlaceHolderID=”TitleContent” runat=”server”>
图片 312    JsonDemo
图片 313</asp:Content>
图片 314<asp:Content ID=”Content2″ ContentPlaceHolderID=”MainContent” runat=”server”>
图片 315
图片 316    <script src=”http://www.cnblogs.com/Scripts/jquery-1.3.2.js” type=”text/javascript”></script>
图片 317
图片 318图片 319    <script type=”text/javascript”>图片 320
图片 321
图片 322图片 323        $.ajaxSetup(图片 324{
图片 325            cache: false
图片 326        });
图片 327
图片 328        $(document).ready(
图片 329图片 330            function() 图片 331{
图片 332
图片 333                $(‘#loading’).hide();
图片 334
图片 335                $(‘#btnFind’).click(
图片 336图片 337                    function(event) 图片 338{
图片 339                        event.preventDefault();
图片 340
图片 341                        $(‘#loading’).show();
图片 342
图片 343                        $.getJSON(
图片 344                            “/ControllerDemo/JsonResult”, // 获取 JSON
图片 345图片 346                            图片 347{ name: $(‘#txtName’)[0].value },
图片 348图片 349                            function(data) 图片 350{
图片 351                                $(‘#result’).append(“name: “);
图片 352                                $(‘#result’).append(data.Name);
图片 353                                $(‘#result’).append(” – “);
图片 354                                $(‘#result’).append(“age: “);
图片 355                                $(‘#result’).append(data.Age);
图片 356                                $(‘#result’).append(“<br />”);
图片 357
图片 358                                $(‘#loading’).hide();
图片 359                            }
图片 360                        )
图片 361                    }
图片 362                )
图片 363            }
图片 364        )
图片 365        
图片 366    </script>
图片 367
图片 368    <h2>
图片 369        JsonDemo</h2>
图片 370    <div style=”margin: 20px 0px”>
图片 371        <input id=”txtName” value=”webabcd” />
图片 372           <a href=”#” id=”btnFind”>Find</a>    <span id=”loading” style=”border: 1px solid #000000;
图片 373            background-color: #FFFFCC; vertical-align: middle; padding: 6px”>
图片 374            <img src=”http://www.cnblogs.com/Content/Images/loading.gif” alt=”Loading” /> Loading图片 375</span>
图片 376        <div id=”result” style=”margin: 10px 0px” />
图片 377    </div>
图片 378</asp:Content>
图片 379

4、上传文件的 Demo
UploadDemo.aspx

图片 380图片 381<%图片 382@ Page Title=”” Language=”C#” MasterPageFile=”~/Views/Shared/Site.Master” Inherits=”System.Web.Mvc.ViewPage” %>
图片 383
图片 384<asp:Content ID=”Content1″ ContentPlaceHolderID=”TitleContent” runat=”server”>
图片 385    UploadDemo
图片 386</asp:Content>
图片 387<asp:Content ID=”Content2″ ContentPlaceHolderID=”MainContent” runat=”server”>
图片 388    <h2>
图片 389        UploadDemo</h2>
图片 390    <!–action – 调用上传文书的 Action–>
图片 391    <form action=”/ControllerDemo/UploadFile” method=”post” enctype=”multipart/form-data”>
图片 392    <input type=”file” id=”file1″ name=”file1″ />
图片 393    <input type=”submit” id=”upload” name=”upload” value=”上传” />
图片 394    </form>
图片 395</asp:Content>
图片 396

OK
[源码下载]

相关文章