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

ASP.NET MVC底层原理与HTTP契约解析 MVC模式本质是HTTP请求与.NET对象之间的结构化映射协议,其核心在于路由匹配、模型绑定、视图解析三大机制如何严格对齐HTTP语义。理解RouteData如何将URL路径段确定性地分解为Controller/Action/参数,掌握DefaultModelBinder在ValueProvider链中按优先级提取表单、路由、查询参数的执行逻辑,才能真正驾驭高并发、安全合规、可测试的Web应用构建。这些原理在ASP.NET Framework与Core中数学同构,仅实现载体不同。本文聚焦MVC内核中被现代抽 阅读详情
[索引页]
[源码下载]


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


作者: webabcd


介绍
asp.net mvc 之 Controller 和 Action
  • Controller 类必须以字符串 "Controller" 做类名称的结尾,字符串 Controller 之前的字符串为 Controller 的名称,类中的方法名为 Action 的名称
  • Action 可以没有返回值。如果 Action 要有返回值的话,其类型必须是 ActionResult


示例
1、Controller/Action
ControllerDemoController.cs
using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Web;
using  System.Web.Mvc;
using  System.Web.Mvc.Ajax;

using  System.IO;

namespace  MVC.Controllers
{
    
/// <summary>
    
/// Controller 类必须以字符串 "Controller" 做类名称的结尾,字符串 Controller 之前的字符串为 Controller 的名称,类中的方法名为 Action 的名称
    
/// </summary>

    public class ControllerDemoController : Controller
    
{
        
// [NonAction] - 当前方法仅为普通方法,不解析为 Action
        
// [AcceptVerbs(HttpVerbs.Post)] - 声明 Action 所对应的 http 方法

        
/// <summary>
        
/// Action 可以没有返回值
        
/// </summary>

        public void Void()
        
{
            Response.Write(
string.Format("<span style='color: red'>{0}</span>", "void"));
        }


        
/// <summary>
        
/// 如果 Action 要有返回值的话,其类型必须是 ActionResult
        
/// EmptyResult - 空结果
        
/// </summary>

        public ActionResult EmptyResult()
        
{
            Response.Write(
string.Format("<span style='color: red'>{0}</span>", "EmptyResult"));
            
return new EmptyResult();
        }


        
/// <summary>
        
/// Controller.Redirect() - 转向一个指定的 url 地址
        
/// 返回类型为 RedirectResult
        
/// </summary>

        public ActionResult RedirectResult()
        
{
            
return base.Redirect("~/ControllerDemo/ContentResult");
        }


        
/// <summary>
        
/// Controller.RedirectToAction() - 转向到指定的 Action
        
/// 返回类型为 RedirectToRouteResult
        
/// </summary>

        public ActionResult RedirectToRouteResult()
        
{
            
return base.RedirectToAction("ContentResult");
        }


        
/// <summary>
        
/// Controller.Json() - 将指定的对象以 JSON 格式输出出来
        
/// 返回类型为 JsonResult
        
/// </summary>

        public ActionResult JsonResult(string name)
        
{
            System.Threading.Thread.Sleep(
1000);

            var jsonObj 
= new { Name = name, Age = new Random().Next(20, 31) };
            
return base.Json(jsonObj);
        }


        
/// <summary>
        
/// Controller.JavaScript() - 输出一段指定的 JavaScript 脚本
        
/// 返回类型为 JavaScriptResult
        
/// </summary>

        public ActionResult JavaScriptResult()
        
{
            
return base.JavaScript("alert('JavaScriptResult')");
        }


        
/// <summary>
        
/// Controller.Content() - 输出一段指定的内容
        
/// 返回类型为 ContentResult
        
/// </summary>

        public ActionResult ContentResult()
        
{
            
string contentString = string.Format("<span style='color: red'>{0}</span>", "ContentResult");
            
return base.Content(contentString);
        }


        
/// <summary>
        
/// Controller.File() - 输出一个文件(字节数组)
        
/// 返回类型为 FileContentResult
        
/// </summary>

        public ActionResult FileContentResult()
        
{
            FileStream fs 
= new FileStream(Request.PhysicalApplicationPath + "Content/loading.gif", FileMode.Open);
            
int length = (int)fs.Length;
            
byte[] buffer = new byte[length];
            fs.Read(buffer, 
0, length);
            fs.Close();

            
return base.File(buffer, "image/gif");
        }


        
// <summary>
        /// Controller.File() - 输出一个文件(文件地址)
        
/// 返回类型为 FileContentResult
        
/// </summary>

        public ActionResult FilePathResult()
        
{
            var path 
= Request.PhysicalApplicationPath + "Content/loading.gif";
            
return base.File(path, "image/gif");
        }


        
// <summary>
        /// Controller.File() - 输出一个文件(文件流)
        
/// 返回类型为 FileContentResult
        
/// </summary>

        public ActionResult FileStreamResult()
        
{
            FileStream fs 
= new FileStream(Request.PhysicalApplicationPath + "Content/loading.gif", FileMode.Open);

            
return base.File(fs, @"image/gif");
        }


        
/// <summary>
        
/// HttpUnauthorizedResult - 响应给客户端错误代码 401(未经授权浏览状态),如果程序启用了 Forms 验证,并且客户端没有任何身份票据,则会跳转到指定的登录页
        
/// </summary>

        public ActionResult HttpUnauthorizedResult()
        
{
            
return new HttpUnauthorizedResult();
        }


        
/// <summary>
        
/// Controller.PartialView() - 寻找 View ,即 .ascx 文件
        
/// 返回类型为 PartialViewResult
        
/// </summary>

        public ActionResult PartialViewResult()
        
{
            
return base.PartialView();
        }


        
/// <summary>
        
/// Controller.View() - 寻找 View ,即 .aspx 文件
        
/// 返回类型为 ViewResult
        
/// </summary>

        public ActionResult ViewResult()
        
{
            
// 如果没有指定 View 名称,则寻找与 Action 名称相同的 View
            return base.View();
        }


        
/// <summary>
        
/// 用于演示处理 JSON 的
        
/// </summary>

        public ActionResult JsonDemo()
        
{
            
return View();
        }


        
/// <summary>
        
/// 用于演示上传文件的
        
/// </summary>

        public ActionResult UploadDemo()
        
{
            
return View();
        }


        
/// <summary>
        
/// 用于演示 Get 方式调用 Action
        
/// id 是根据路由过来的;param1和param2是根据参数过来的
        
/// </summary>

        [AcceptVerbs(HttpVerbs.Get)]
        
public ActionResult GetDemo(int id, string param1, string param2)
        
{
            ViewData[
"ID"] = id;
            ViewData[
"Param1"] = param1;
            ViewData[
"Param2"] = param2;

            
return View();
        }


        
/// <summary>
        
/// 用于演示 Post 方式调用 Action
        
/// </summary>
        
/// <remarks>
        
/// 可以为参数添加声明,如:[Bind(Include = "xxx")] - 只绑定指定的属性(参数),多个用逗号隔开
        
/// [Bind(Exclude = "xxx")] - 不绑定指定的属性(参数),多个用逗号隔开
        
/// [Bind] 声明同样可以作用于 class 上
        
/// </remarks>

        [AcceptVerbs(HttpVerbs.Post)]
        
public ActionResult PostDemo(FormCollection fc)
        
{
            ViewData[
"Param1"] = fc["param1"];
            ViewData[
"Param2"] = fc["param2"];

            
// 也可以用 Request.Form 方式获取 post 过来的参数

            
// Request.Form 内的参数也会映射到同名参数。例如,也可用如下方式获取参数  
            
// public ActionResult PostDemo(string param1, string param2)

            
return View("GetDemo");
        }


        
/// <summary>
        
/// 处理上传文件的 Action
        
/// </summary>
        
/// <param name="file1">与传过来的 file 类型的 input 的 name 相对应</param>

        [AcceptVerbs(HttpVerbs.Post)]
        
public ActionResult UploadFile(HttpPostedFileBase file1)
        
{
            
// Request.Files - 获取需要上传的文件。当然,其也会自动映射到同名参数
            
// HttpPostedFileBase hpfb = Request.Files[0] as HttpPostedFileBase;

            
string targetPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "Upload", Path.GetFileName(file1.FileName));
            file1.SaveAs(targetPath);

            
return View("UploadDemo");
        }

    }

}



2、Get 方式和 Post 方式调用 Controller 的 Demo
GetDemo.aspx
<% @ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage"  %>

< asp:Content  ID ="Content1"  ContentPlaceHolderID ="TitleContent"  runat ="server" >
    GetDemo
</ asp:Content >
< asp:Content  ID ="Content2"  ContentPlaceHolderID ="MainContent"  runat ="server" >
    
< h2 >
        GetDemo
</ h2 >
    
< div >
        
<% =  ViewData[ " ID " ]  %> </ div >
    
< div >
        
<% =  ViewData[ " Param1 " ]  %> </ div >
    
< div >
        
<% =  ViewData[ " Param2 " ]  %> </ div >
        
    
< form  action ="/ControllerDemo/PostDemo"  method ="post" >
    
< input  id ="param1"  name ="param1"   />
    
&nbsp;
    
< input  id ="param2"  name ="param2"   />
    
&nbsp;
    
< input  type ="submit"  value ="submit"   />
    
</ form >
</ asp:Content >


3、处理 JSON 的 Demo
JsonDemo.aspx
<% @ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage"  %>

< asp:Content  ID ="Content1"  ContentPlaceHolderID ="TitleContent"  runat ="server" >
    JsonDemo
</ asp:Content >
< asp:Content  ID ="Content2"  ContentPlaceHolderID ="MainContent"  runat ="server" >

    
< script  src ="http://www.cnblogs.com/Scripts/jquery-1.3.2.js"  type ="text/javascript" ></ script >

    
< script  type ="text/javascript" >

        $.ajaxSetup(
{
            cache: 
false
        }
);

        $(document).ready(
            
function() {

                $(
'#loading').hide();

                $(
'#btnFind').click(
                    
function(event) {
                        event.preventDefault();

                        $(
'#loading').show();

                        $.getJSON(
                            
"/ControllerDemo/JsonResult", // 获取 JSON
                            { name: $('#txtName')[0].value },
                            
function(data) {
                                $(
'#result').append("name: ");
                                $(
'#result').append(data.Name);
                                $(
'#result').append(" - ");
                                $(
'#result').append("age: ");
                                $(
'#result').append(data.Age);
                                $(
'#result').append("<br />");

                                $(
'#loading').hide();
                            }

                        )
                    }

                )
            }

        )
        
    
</ script >

    
< h2 >
        JsonDemo
</ h2 >
    
< div  style ="margin: 20px 0px" >
        
< input  id ="txtName"  value ="webabcd"   />
        
&nbsp;&nbsp;   < a  href ="#"  id ="btnFind" > Find </ a >   &nbsp;&nbsp;   < span  id ="loading"  style ="border: 1px solid #000000;
            background-color: #FFFFCC; vertical-align: middle; padding: 6px"
>
            
< img  src ="http://www.cnblogs.com/Content/Images/loading.gif"  alt ="Loading"   /> &nbsp; Loading </ span >
        
< div  id ="result"  style ="margin: 10px 0px"   />
    
</ div >
</ asp:Content >


4、上传文件的 Demo
UploadDemo.aspx
<% @ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage"  %>

< asp:Content  ID ="Content1"  ContentPlaceHolderID ="TitleContent"  runat ="server" >
    UploadDemo
</ asp:Content >
< asp:Content  ID ="Content2"  ContentPlaceHolderID ="MainContent"  runat ="server" >
    
< h2 >
        UploadDemo
</ h2 >
    
<!-- action - 调用上传文件的 Action -->
    
< form  action ="/ControllerDemo/UploadFile"  method ="post"  enctype ="multipart/form-data" >
    
< input  type ="file"  id ="file1"  name ="file1"   />
    
< input  type ="submit"  id ="upload"  name ="upload"  value ="上传"   />
    
</ form >
</ asp:Content >


OK
[源码下载]
SAR成像系列:【3】合成孔径雷达(SAR)的二维回波信号与简单距离多普勒(RD)算法 (附matlab代码) 二维回波信号分析 阅读详情

相关推荐

为什么RingMo能成为遥感领域的首个生成式自监督基础模型?

RingMo作为遥感领域首个生成式自监督基础模型,通过创新的图像掩码建模技术解决了传统方法在遥感图像处理中的挑战。该模型利用两百万张多元数据集进行预训练,在小目标检测、场景分类等任务上表现卓越,显著提升了性能指标。RingMo的技术突破为遥感图像解译提供了高效解决方案,降低了标注成本并增强了模型泛化能力。

ll5678的博客 691

Asp.net MVC 中Controller返回值类型ActionResult

Asp.net MVC中Controller返回值类型 在mvc中所有的controller类都必须使用"Controller"后缀来命名 并且对Action也有一定的要求: 必须是一个public方法必须是实例方法没有标志NonActionAttribute特性的(NoAction)不能被重载必须返回ActionResult类型 如: public class MyContro

pasic的专栏 4万+

离线安装PlutoSDR硬件支持包全攻略:没有MathWorks账号也能搞定MATLAB集成

本文详细介绍了在没有MathWorks账号和网络环境的情况下,如何离线安装PlutoSDR硬件支持包并实现MATLAB集成的完整解决方案。从驱动安装、设备识别到MATLAB支持包的离线部署,提供了全面的步骤指导和常见问题排查方法,特别适合高校实验室、军工单位等内网环境使用。

js777的博客 265

MVC中几种常用ActionResult

一、定义 MVC中ActionResult是Action的返回结果。ActionResult 有多个派生类,每个子类功能均不同,并不是所有的子类都需要返回视图View,有些直接返回流,有些返回字符串等。ActionResult是一个抽象类,它定义了唯一的ExecuteResult方法,参数为一个ControllerContext,下面为您介绍MVC中的ActionResult 的用法   二、什么...

weixin_34121282的博客 1668

uniapp实战:5分钟搞定PDA激光扫码功能(附完整代码)

本文详细介绍了在Uniapp应用中快速集成工业PDA激光扫码功能的实战方案。通过解析PDA硬件扫码与手机摄像头扫码的核心机制差异,提供了完整的广播监听封装类代码,并演示了在Vue页面中的集成使用方法,帮助开发者高效解决仓储、零售等行业的条码扫描需求。

weixin_29239661的博客 456

Numpy快速入门(np)!看这一篇就够了

Numpy快速入门(np)!看这一篇就够了

weixin_74009895的博客 2678

ASP.NET MVC5(1)返回字符串+路由解析设置

ASP.NET MVC会调用不同的控制器类(和其内部不同的操作方法)这取决于传入URL。所使用的ASP.NET MVC的默认URL路由逻辑使用这样的格式来判定哪些代码以便调用: /[Controller]/[ActionName]/[Parameters] 你也可在App_Start/RouteConfig.cs 文件内通过配置URL路由解析规则: public static

马里奥的专栏 2037

matlab 点云均值、中值、高斯滤波【2024最新版】

点云均值滤波、中值滤波、高斯滤波的matlab自带函数实现。博客长期更新,本文最近一次更新时间为:2024年11月9日。

点云侠的博客 5259

Asp.net MVC中Controller返回值类型

Asp.net MVC中Controller返回值类型 在mvc中所有的controller类都必须使用"Controller"后缀来命名 并且对Action也有一定的要求: 必须是一个public方法 必须是实例方法 没有标志NonActionAttribute特性的(NoAction) 不能被重载 必须返回ActionResult类型 ASP.NET MVC包括了执行常见任务...

zgscwxd的博客 2926

06 - 深度学习处理器原理

深度学习处理器的重要性在于它们可以加速深度学习任务的执行,从而推动了人工智能的发展。传统的通用处理器虽然可以执行深度学习任务,但它们不够高效,需要消耗大量的能量和时间。深度学习处理器通过硬件加速和特定设计来优化深度学习任务的执行,从而可以提高执行效率、降低能耗和加速训练和推断过程。 深度学习处理器的发展也推动了深度学习算法的创新,因为算法的发展需要硬件的支持和驱动。同时,深度学习处理器的出现也促进了更广泛的应用场景,包括自动驾驶、人脸识别、语音识别、图像识别等领域。因此,深度学习处理器的重要性不仅在于加速

m0_51339444的博客 752

Test-Time Adaptation Induces Stronger Accuracy and Agreement-on-the-Line

TTA不管是否提高了OOD的泛化性都增强了线性的趋势,TTA的初始目的是为了增强OOD的表现,一个人可能会觉得TTA使得ACL更强的原因是他消除了ID和OOD之间的差距,因此所有模型间ID vs OOD的准确率接近于y=x这条线,但是实际上这个解释不能够反映我们的经验发现,因为虽然TTA将分布之间的偏移简化为一种放缩的分布,但是这个放缩的因子幅值可能很大,也就是α<<1但是r>>1,这就会导致很偏离y=x这条线,而且理论分析也是,虽然ID和OOD的差距很大,但是线性关系还在。

m0_62673638的博客 148

Asp.Net MVC控制器中Action的返回值类型

ActionResult及其常用子类的用法。

xiaouncle的博客 8692

YOLOv11改进 | 引入DEConv细节增强卷积模块:恢复细节信息,提升小目标检测精度

摘要: YOLOv11在目标检测中面临小目标检测精度不足的问题,主要由于细节信息丢失。本文提出引入DEConv(细节增强卷积)模块,通过多分支卷积和残差连接恢复高频细节,提升小目标检测性能。DEConv结合3×3卷积与空洞卷积增强边缘信息,并自适应融合特征,兼容YOLOv11的P3层(小目标关键层)且计算高效。实验表明,该改进在无人机航拍、显微镜图像等密集小目标场景中显著减少漏检,同时保持轻量化和实时性优势。代码实现可直接嵌入现有YOLO架构,仅需替换P3层卷积模块。

走向CTO的路上... 948

返璞归真asp.net mvc 1.0(3) - Controller/Action【转】

介绍asp.net mvc 之 Controller 和 Action Controller 类必须以字符串 "Controller" 做类名称的结尾,字符串 Controller 之前的字符串为 Controller 的名称,类中的方法名为 Action 的名称Action 可以没有返回值。如果 Action 要有返回值的话,其类型必须是 ActionResult 示例1、Controller...

weixin_30507481的博客 101

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

返璞归真 asp.net mvc (7) - asp.net mvc 3.0 新特性之 Controller

返璞归真 asp.net mvc (7) - asp.net mvc 3.0 新特性之 Controller 原文:返璞归真 asp.net mvc (7) - asp.net mvc 3.0 新特性之 Controller[索引页][源码下载] 返璞归真 asp.net mvc (7) - asp.net mvc 3.0 新特性之 Cont...

weixin_30439031的博客 125

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

重读ASP.NET MVC经典系列:理解Web开发架构演进的底层逻辑

ASP.NET MVC 是 .NET Web 开发的奠基性框架,其核心架构思想——请求路由、模型绑定、视图渲染、过滤器管道——构成了现代 Web 框架的通用契约。尽管 ASP.NET Core 已全面演进,但 MVC 的生命周期设计、Action 执行流程、RouteData 与 ModelState 等关键机制仍在新框架中延续并显式暴露。掌握这些基础概念,能显著提升对 Minimal APIs、中间件管道、TagHelper 渲染等高级特性的理解深度与调试效率。本文聚焦‘返璞归真 ASP.NET MVC’

unixboy 463

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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

作者:webabcd 介绍 asp.net mvc 之 Controller 和 Action Controller 类必须以字符串 "Controller" 做类名称的结尾,字符串 Controller 之前的字符串为 Controller 的名称,类中的方法名为 Action 的名称Action 可以没有返回值。如果 Action 要有返回值的话,其类型必须是 ActionR

lwj0310的专栏 619

返璞归真 asp.net mvc 1.0 系列文章索引

[源码下载]返璞归真 asp.net mvc 1.0 系列文章索引作者:webabcd介绍返璞归真 asp.net mvc 1.0 系列文章索引:添加、查询、更新和删除的Demo, 路由(System.Web.Routing), Controller/Action, View/ViewEngine, Action Filter, UpdateModel, ModelBinder, Ajax,

webabcd的专栏 524

返璞归真 asp.net mvc 系列文章索引

[源码下载]返璞归真 asp.net mvc系列文章索引 作者:webabcd介绍返璞归真 asp.net mvc系列文章索引:添加、查询、更新和删除的Demo,路由(System.Web.Routing), Controller/Action, View/ViewEngine, Action Filter, UpdateModel, ModelB...

weixin_33962621的博客 143

返璞归真asp.net mvc 1.0(5) - Action Filter, UpdateModel, ModelBinder, Ajax, Unit Test【转】

介绍asp.net mvc 之 Action Filter, UpdateModel, ModelBinder, Ajax, Unit Test Action Filter - 在 Controller 层对信息做过滤。如何实现自定义的 Action FilterUpdateModel -  根据参数自动为对象的属性赋值ModelBinder - 定义如何绑定 Model,DefaultMode...

weixin_34101784的博客 116

ASP.NET MVC 执行流程深度解析:从路由匹配到视图渲染的可调试全链路

ASP.NET MVC 是一种基于约定的 Web 应用开发框架,其核心价值在于显式暴露请求处理的完整生命周期——包括路由解析、模型绑定、动作执行、过滤器调度与视图渲染五大阶段。这种‘契约显性化’设计使开发者能精准定位 404/500 错误根因,尤其在混合架构(如 MVC + Minimal API)或老旧系统升级场景中,成为排查中间件堆叠导致的隐性时序问题的关键能力。技术价值体现在可调试性、组件级可控性与跨版本稳定性上,广泛应用于企业级遗留系统重构、高可靠性后台管理平台及需要强契约约束的 B2B 接口服务。

dejz8829的专栏 515
上一篇: 稳扎稳打Silverlight(29) - 2.0Tip/Trick之Cookie, 自定义字体, 为程序传递参数, 自定义鼠标右键, 程序常用配置参数
下一篇: 返璞归真asp.net mvc 1.0(4) - View/ViewEngine
webabcd
博客等级 码龄17年 28粉丝 911原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值