我们都知道Asp.net MVC自带的Action可以有多种类型,比如ActionResult,ContentResult,JsonResult……,但是很遗憾没有支持直接返回XML的XmlResult. 当然,你也可以用ActionResult或者ContentResult,然后直接返回xml字符串. 如果我们想要想JsonResult一样来调用和返回xml结果,我们可以自己新建扩展XmlResult,该怎么办呢?不多说,看下面实例: 第一步,扩展System.Web.Mvc XmlReque…
ASP.NET MVC学前篇之扩展方法.链式编程 前言 目的没有别的,就是介绍几点在ASP.NETMVC 用到C#语言特性,还有一些其他琐碎的知识点,强行的划分一个范围的话,只能说都跟MVC有关,有的是外围的知识,有的是包含在框架内的. MVC学前篇字样?有噱头的成分也有真实的成分,所以工欲善其事,必先利其器.器是什么?基础嘛,虽然说MVC框架中涉及到的知识很多很多也不是我一篇两篇能说完的,我能做的就是知道多少就跟大家分享多少,当然了随着时间的推移会完善这个系列. 1扩展方法 扩展方法是C# 3…
继上一篇文章之后,本文将介绍 Controller 和 Action 的一些较高级特性,包括 Controller Factory.Action Invoker 和异步 Controller 等内容. 本文目录 开篇:示例准备 文章开始之前,我们先来了解一下一个请求的发出到Action方法处理后返回结果的流程,请试着理解下图: 本文的重点是 controller factory 和 action invoker.顾名思义,controller factory 的作用是创建为请求提供服务的Cont…
Asp.Net在客户端和服务器端,以JSON形式相互传值,可写扩展方法,用到的类型如下: DataContractJsonSerializer类: 该类在System.Runtime.Serialization.Json命名空间下,是将对象序列化为JavaScript对象表示法(Json),并将Json数据反序列化为对象. 以Asp.Net MVC为例: 扩展方法如下: using System; using System.Collections.Generic; using System.Li…
Asp.Net在客户端和服务器端,以JSON形式相互传值,可写扩展方法,用到的类型如下: DataContractJsonSerializer类: 该类在System.Runtime.Serialization.Json命名空间下,是将对象序列化为JavaScript对象表示法(Json),并将Json数据反序列化为对象. 以Asp.Net MVC为例: 扩展方法如下: using System; using System.Collections.Generic; using System.Li…
Controller基础 一. 访问修饰符 1.1 类的访问修饰符 Controller类的访问修饰符必须是public,url才能被拦截. internal能编译通过,但无法拦截url请求.private.protected.protected internal不能通过编译. 1.2 方法的访问修饰符 Controller中方法的访问修饰符必须是public,url才能被拦截.其它类型的访问修饰符会使该方法无法拦截url请求. 二. 特性 可使用的特性有很多,这里只描述常用的一些特性,同样,类…
我们知道,在 MVC 中每个请求都会提交到 Controller 进行处理.Controller 是和请求密切相关的,它包含了对请求的逻辑处理,能对 Model 进行操作并选择 View 呈现给用户,对于业务和数据的逻辑代码以及接口和辅助类库等一般都不放到 Controller 中. Controller 和 Action 的内容较多,我把它分成了两篇,也可能会分成三篇.本篇介绍 Controller 的实现.Controller 对状态数据的获取.ActionResult 和 Action 的…
MVC的标准流程是请求传递给控制器,由控制器action方法操作数据模型,最后交由视图渲染输出,这里忽略了两个细节,就是MVC是如何创建相应控制器实例,又是如何调用控制器action方法的,这就必须讲到控制器工厂和action调用器. 控制器工厂 Controller factory负责创建并初始化控制器,控制器工厂实现IControllerFactory接口: namespace System.Web.Mvc { public interface IControllerFactory { IC…
Unity是微软Patterns & Practices团队所开发的一个轻量级的,并且可扩展的依赖注入(Dependency Injection)容器,它支持常用的三种依赖注入方式:构造器注入(Constructor Injection).属性注入(Property Injection),以及方法调用注入(Method Call Injection).可以在微软的开源站点http://unity.codeplex.com下载最新的发布版本和文档.通过使用Unity,我们能轻松构建松耦合结构的程序…
我们知道ASP.NET mvc提供一些表单的验证标注,比如必填属性RequiredAttribute 但是这个属性不适合选择框的必选 但是很多时候,我们却是需要一些必选的单选框 比如网站注册的时候,需要用户同意网站的一些规定等等 为此,我封装了一个BooleanRequiredAttribute的标注类, 该类可以标注那些框必填 具体类如下: public class BooleanRequiredAttribute : ValidationAttribute, IClientValidatab…
  参考:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-view 一,Controller 中的ActionResult方法会用一个View Template生成HTML页面反馈到浏览器中: 1,修改Index方法如下 public ActionResult Index() { return View();} 2,在Index 方法中右键,添加View视图,Views视图下的Hel…
1,turorial ,根据链接教程新建一个MVC项目 http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4 First Page: 2,M-V-C: Models: 存放数据模型(Model Data),验证接收的数据(Validation Logic) Views:  用户看到的HTML页面 (dynamically genetate HTML Page) C…
在MVC中,要把前端View中的值传递给后端Controller, 主要有两种方法 1. 利用Request.Form 或者 Request.QueryString public ActionResult Index() { ViewData["Message"] = "Welcome to ASP.NET MVC!"; ViewData["name"] = Request.Form["name"]; ViewData[&qu…
再ASP.NET MVC编程中用到了R语法,在View页面编辑HTML标签的时候,ASP.NET MVC 为我们准备好了可以辅助我们写这些标签的办法,它们就是HtmlHelper.微软官方地址是:https://msdn.microsoft.com/zh-cn/library/system.web.mvc.html(v=vs.118).aspx 在此,整理了一份对应的表格,以便快速记忆. HTML <select> 标签(下拉列表) <select name="selectTa…
本文参考:http://www.cnblogs.com/willick/p/3331513.html 1.MVC一个请求的发出至action返回结果的流程图如下: 重点是Controller Factory 和 Action Invoker.Controller Factory的作用是创建为请求提供服务的Controller实例:Action Invoker的作用是寻找并调用Action方法. 2.自定义Controller Factory需要实现IControllerFactory接口(实际开…
本文参考:http://www.cnblogs.com/willick/p/3331521.html 1.继承IController接口,示例代码将当前请求的Controller和Action打印到浏览器: public class BasicController : IController { public void Execute(RequestContext requestContext) { string controller = (string)requestContext.Route…
一.获取URL(ASP.NET通用): [1]获取完整url(协议名+域名+虚拟目录名+文件名+参数) string url=Request.Url.ToString(); [2]获取虚拟目录名+页面名+参数: string url=Request.RawUrl;(或 string url=Request.Url.PathAndQuery;) [3]获取虚拟目录名+页面名: string url=HttpContext.Current.Request.Url.AbsolutePath;(或 st…
原文:http://www.strathweb.com/2015/01/asp-net-mvc-6-attribute-routing-controller-action-tokens/ 当在Web API 2或者MVC 5 中使用路由属性很容易发生路由和控制器的名字不同步的情况. 这是因为路由通常就是一个字符串, 因此当改变了控制器的名字我们同时也要去修改路由属性. 当时我们通常会忘记修改. 在MVC 6中这个问题得到了改善 – 通过引入 [controller] 和 [action] tok…
一.开篇题外话 我经常会在博客园逛来逛去,看过很多大牛们的Blog,我很少在这块技术天地活动,之前有发表过几篇日志,好像大部分是和电商有关,作为一个多年的开发人员,很少在这里分享,之前一直在CSDN上活动,因为我的Blog在那上边的排名1000多名,我想好好维护好CSDN,但是我发现越来越多的同行们都转战博客园.所以我也跟风来到此块宝地,我来了,你在哪? 二.分离的优点 1.松耦合:耦合是指一个系统的组件之间的相关程度.越少的组件相互依赖,那么这个系统的重用性和灵活性就越好. 2.更好的团队分工…
ModelStateExtensions.cs using System.Collections.Generic; using System.Linq; using System.Web.Mvc; namespace MvcSample.Extensions { public static class ModelStateExtensions { private static string GetErrorMessage(ModelError error, ModelState modelSta…
var Url = new UrlHelper(HttpContext.Current.Request.RequestContext); Url.Action("AnnounceDetail", "Help", new {id = x.Id})…
ASP.NET MVC 学习笔记-7.自定义配置信息   ASP.NET程序中的web.config文件中,在appSettings这个配置节中能够保存一些配置,比如, 1 <appSettings> 2 <add key="LogInfoProvider" value="Cookie" />//登录信息保存方式 3 </appSettings> 但是这些配置都是单个字符串信息,在某些情况下,无法做到灵活配置. 针对这种情况,使用…
ASP.NET MVC 3.0 Controller基础   1.Controller类与方法 Controller(控制器)是ASP.NET MVC的核心,负责处理浏览器请求,并作出响应.Cotroller本身是一个类(Class),该类有多个方法(Method).在这些方法中,只要是公开方法,该方法将被视为一个动作(Action):只要有动作存在,就可以通过该动作方法接收网页请求并决定应响应的视图. Controller的基本要求: Controller必须是公共(Public)类: Con…
我们在上一篇文章中介绍Controller激活系统中所涉及到的一些类型,比如有关Controller类型的相关定义类型就包括了IController类型,IAsyncController类型,ControllerBase抽象类型和我们最终要使用的抽象类型Controller,这是ASP.NET MVC 框架中和Controller本身定义相关的类型.其他辅助类型,包括管理Controller的类型ControllerFactory,这个工厂负责Controller的生产和销毁.我们还涉及到另一个…
1. 返回ViewResult public ActionResult Index()   {       ViewData["Message"] = "Welcome to asp.net MVC!";       return View();   }  public ActionResult Index(){    ViewData["Message"] = "Welcome to ASP.NET MVC!";    re…
ASP.NET MVC 一.获取URL(ASP.NET通用): [1]获取完整url(协议名+域名+虚拟目录名+文件名+参数) string url=Request.Url.ToString(); [2]获取虚拟目录名+页面名+参数: string url=Request.RawUrl;(或 string url=Request.Url.PathAndQuery;) [3]获取虚拟目录名+页面名: string url=HttpContext.Current.Request.Url.Absolu…
ASP.NET MVC 目前一共提供了以下几种Action返回结果类型: 1.ActionResult(base) 2.ContentResult 3.EmptyResult 4.HttpUnauthorizedResult 5.JavaScriptResult 6.JsonResult 7.FileResult (base) 8.FileContentResult 9.FilePathResult 10.FileStreamResult 11.RedirectResult 12.Redirec…
本文转自:http://blog.bossma.cn/asp_net_mvc/asp-net-mvc-htmlhelper-calendar-datetime-select/ 这里我们扩展HtmlHelper,就像它包含在ASP.NET MVC中一样,扩展方法使我们能为已有的类添加方法.这里使用了一个日期时间选择控件:My97DatePicker,需要添加到网站中,并在页面中引用. 先看看是怎么扩展的: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18…
PS: 唉,这篇随笔国庆(2015年)放假前几天开始的,放完假回来正好又赶上年底,公司各种破事儿. 这尼玛都写跨年了都,真服了.(=_=#) 好几次不想写了都. 可是又不想浪费这么多,狠不下心删除.没办法,慢慢补齐发出来吧.唉. 大家喜欢的别忘了支持一下,谢谢我猿友们.呵呵. 视图 本篇目录: 1. 前言 2. 视图的作用 3. 视图的基础知识 4. 理解视图约定 5. 强类型视图 5.1 ViewBag的不足 5.2 理解ViewBag.ViewData和ViewDataDictionary1…
在[ASP.NET MVC 小牛之路]系列上一篇文章(依赖注入(DI)和Ninject)的末尾提到了在ASP.NET MVC中使用Ninject要做的两件事情,续这篇文章之后,本文将用一个实际的示例来演示Ninject在ASP.NET MVC中的应用. 为了更好的理解和撑握本文内容,强烈建议初学者阅读本文前先阅读依赖注入(DI)和Ninject. 本文目录: 准备工作 新建一个名为BookShop的空白解决方案.在该解决方案中分别添加一个名为BookShop.WebUI的MVC空应用程序,和一个…