http://mpvideo.qpic.cn/0bf2miasmaabueamix6irzpvcywdezracjqa.f10002.mp4?dis_k=edb28de48cadd4a2aae7580
FileResult是一个基于文件的ActionResult,利用FileResult我们可以很容易地将从某个物理文件的内容响应给客户端。 1: public abstract class FileResult : ActionResult 2: { 3: protected FileResult(string 1: public abstract class FileResult : ActionResult 2: { 3: //其他成员 4: public override 了解ASP.NET MVC几种ActionResult的本质:EmptyResult & ContentResult 了解ASP.NET MVC几种ActionResult的本质:FileResult 了解ASP.NET MVC几种ActionResult的本质:JavaScriptResult & JsonResult 了解ASP.NET MVC几种ActionResult的本质:HttpStatusCodeResult
在本系列的最后一篇,我们来讨论最后三个ActionResult:HttpStatusCodeResult、RedirectResult和RedirectToRouteResult 。 1: public class HttpStatusCodeResult : ActionResult 2: { 3: public HttpStatusCodeResult 1: public class HttpStatusCodeResult : ActionResult 2: { 3: //其他成员 4: public override ActionResult的本质:FileResult 了解ASP.NET MVC几种ActionResult的本质:JavaScriptResult & JsonResult 了解ASP.NET MVC 几种ActionResult的本质:HttpStatusCodeResult & RedirectResult/RedirectToRouteResult
在之前的两篇文章(《EmptyResult & ContentResult》和《FileResult》)我们剖析了EmptyResult、ContentResult和FileResult这三种ActionResult 本篇文章着重介绍在进行Ajax调用中经常使用的两个ActionResult,即JavaScriptResult和JsonResult。[本文已经同步到《How ASP.NET MVC Works?》 1: public class JavaScriptResult : ActionResult 2: { 3: public override void ExecuteResult( 1: //JavaScriptResult: 2: public class FooController : Controller 3: { 4: public ActionResult 的本质:EmptyResult & ContentResult 了解ASP.NET MVC几种ActionResult的本质:FileResult 了解ASP.NET MVC几种ActionResult
在之前的两篇文章(《EmptyResult & ContentResult》和《FileResult》)我们剖析了EmptyResult、ContentResult和FileResult这三种ActionResult 本篇文章着重介绍在进行Ajax调用中经常使用的两个ActionResult,即JavaScriptResult和JsonResult。[本文已经同步到《How ASP.NET MVC Works?》 1: public class JavaScriptResult : ActionResult 2: { 3: public override void ExecuteResult( 1: //JavaScriptResult: 2: public class FooController : Controller 3: { 4: public ActionResult 的本质:EmptyResult & ContentResult 了解ASP.NET MVC几种ActionResult的本质:FileResult 了解ASP.NET MVC几种ActionResult
在Asp.net Core之前所有的Action返回值都是ActionResult,Json(),File()等方法返回的都是ActionResult的子类。 ActionResult类 ActionResult类是最常用的返回值类型。基本沿用了之前Asp.net MVC的那套东西,使用它大部分情况都没问题。比如用它来返回视图,返回json,返回文件等等。 深入ActionResult< T > 接上面的问题,让我们看一下ActionResult的内部: ? public static implicit operator ActionResult<TValue>(ActionResult result); 表示ActionResult类型可以转换为ActionResult 因为有了这2个方法,当ActionResult或者TValue类型往ActionResult< T >赋值的时候会进行一次自动的类型转换。所以VS这里不会报错。
而它的返回类型是ActionResult如 public ActionResult Index() { return View(); 一、ascx页面 场景:要返回代码片断,比如Ajax返回一个子页 我们先新建一个Action public ActionResult Ascx() { 此时我们可以使用以下Action形式: public ActionResult Text(){ return Content("这是一段文本"); } 三、返回Json 有时我们在调用Ajax时还会要求返回对象为Json序列化的结果,如: public ActionResult ShowJson() { 我们访问之,得到一个正常页面但其Content-Type:application/x-javascript; charset=utf-8 五、页面跳转 1.跳转到Url public ActionResult
调用action,得到返回结果 var actionResult = desc.ActionType.apply(c, agrs) return reslove(actionResult ) }).then(actionResult => { if (actionResult instanceof ViewResult) { //5. (ViewActionResultData => { var findViewNamePath = actionResult.name[0] === '/' ? actionResult.name.substr(1) : (cname + '/' + actionResult.name) res.render(findViewNamePath req.query['callback'] + '(' + JSON.stringify(actionResult) + ')' : actionResult; res.send
这样的派生类还有常见的JsonResult和ContentResult等,他们都继承了ActionResult,而ActionResult实现了IActionResult接口。 ObjectResult也是ActionResult的子类。下文有个ActionResult<T> 类型就是这样,该例会介绍。 图 2 这里有void类型没有讲到,它本身没有返回结果,但它会被赋予一个结果EmptyResult,它也是ActionResult的子类。 public sealed class ActionResult<TValue> : IConvertToActionResult { public ActionResult(TValue value implicit operator ActionResult<TValue>(ActionResult result) { return new ActionResult<TValue
public ActionResult GetPet(string petKey) { return View(); } } 代码要点 在上面的例子中, /Pet 和 / Index() { return View(); } // eg: /Booking/5 [Route("Booking/{bookId}")] public ActionResult Index() { return View(); } // eg: /Booking/5 [Route("{bookId}")] public ActionResult Show Index() { return View(); } // eg: /Booking/Show public ActionResult Show() { return View(); } // eg: /Booking/New public ActionResult New() { return View(); } } 上面的路由在浏览器中看起来是这样的: ?
<Answer>("answers"); } } } 问题查询单个实现 linq 查询 [HttpGet] [Route("{id}")] public async Task<ActionResult ")); 问题查询列表实现 数据 AnyIn查询 排序 sort : StirngFieldDefinition 分页 skip, limit [HttpGet] public async Task<ActionResult cancellationToken); return Ok(); } 问题评论实现 [HttpPost] [Route("{id}/comment")] public async Task<ActionResult null, cancellationToken); return Ok(); } 问题投票实现 [HttpPost] [Route("{id}/up")] public async Task<ActionResult = database.GetCollection<Answer>("answers"); } [HttpGet] public async Task<ActionResult
前执行,OnResultExecuted是解析ActionResult后执行。 下面我们说几个系统的Filter 三、AcceptVerbs 规定页面的访问形式,如 [AcceptVerbs(HttpVerbs.Post)] public ActionResult 应用场景:如果不想用方法名做为Action名,或Action名为关键字的话,如 [ActionName("class")] public ActionResult Example [ValidateInput(false)] public ActionResult Example() { return View(); [ValidateAntiForgeryToken] public ActionResult Example() { return View();
作为Controller基类ControllerBase的Execute方法的核心在于对Action方法的执行和作为方法返回的ActionResult的执行,两者的执行是通过一个叫做ActionInvoker actionResult = method.Invoke(controllerContext.Controller, parameters.ToArray()) as ActionResult; 和真正的ASP.NET MVC一样,定义在Contrller的Action方法返回一个ActionResult对象,我们通过指定它的Execute方法是先对请求的响应。 三、ActionResult 我们为具体的ActionResult定义了一个ActionResult抽象基类。 1: public class RawContentResult: ActionResult 2: { 3: public string RawData { get; private
Answer>("answers"); } } } 问题查询单个实现 linq 查询 [HttpGet] [Route("{id}")] public async Task<ActionResult )); 问题查询列表实现 数据 AnyIn查询 排序 sort : StirngFieldDefinition 分页 skip, limit [HttpGet] public async Task<ActionResult == null) return NotFound(); return Ok(result); } 问题创建实现 [HttpPost] public async Task<ActionResult cancellationToken); return Ok(); } 问题评论实现 [HttpPost] [Route("{id}/comment")] public async Task<ActionResult = database.GetCollection<Answer>("answers"); } [HttpGet] public async Task<ActionResult
// ASP.NET MVC框架的基本结构 public class HomeController : Controller { public ActionResult Index public class HomeController : Controller { public ActionResult Index() { public ActionResult Index() { ViewBag.Message = "Hello, World!" // 在控制器中 public ActionResult Index() { return View(); } // 在视图中 @Html.Partial( public async Task<ActionResult> Index() { var data = await GetDataAsync(); return View(data);
1.OutputCache 简单Demo [OutputCache(Duration = 60)] public ActionResult Index() { ViewBag.date = 2.带参数的缓存 [OutputCache(Duration = 60, VaryByParam = "id")] public ActionResult Index2(int id) { 参照如下方法: public ActionResult RemoveCacheById(int id) { var url = Url.Action("Index2", "Home", new 3.多个参数的缓存 [OutputCache(Duration = 3600, VaryByParam = "author;postname")] public ActionResult Blog(string this.ViewBag.Author = author; this.ViewBag.PostName = postname; return View(); } public ActionResult
; } } 另外一种方式就是返回泛型ActionResult<string>,其中OK和NotFound是继承自ActionResult然后隐式转换到泛型,也可以直接返回 IActionResult或者ActionResult但是类型不确定这样swagger文档就不会解析出返回值,所以我们用ActionResult泛型。 [HttpDelete("{id}")] public ActionResult<string> DeleteStudent(int id) { ; } } [HttpDelete("{id}")] public ActionResult DeleteStudent(int [HttpDelete("number/{id}/Name/{name}")] //自己组织的URL public ActionResult<string> DeleteStudent(
/
/// <returns></returns>
[HttpGet("ByBytes")]
public async Task<ActionResult
/// <returns></returns>
[HttpGet("ByStream")]
public async Task<ActionResult //
/// <returns></returns>
[HttpGet("ByList")]
public async Task<ActionResult 值得注意的是:
使用XlsxFileResult需引用包Magicodes.IE.Excel.AspNetCore
XlsxFileResult继承自ActionResult,目前支持字节数组、流和泛型集合为参数的 ——XlsxFileResult,核心参考代码如下所示:
///
通过添加路由参数可解决这个问题: //id作为一个动态参数 [Route("Person/{id}")] public ActionResult Details(int id) Index() { return View(); } public ActionResult About() { Index() { return View(); } public ActionResult About() { Index() { return View(); } public ActionResult About() { Index() { return View(); } public ActionResult About() {
【UsersController.cs】控制器代码 public class UsersController : Controller { // GET: Users public ActionResult >删除 } 后台代码 public ActionResult UpdateById(int id) { return View(); } public ActionResult Del(int id) { using (UsersDBEntities db = new UsersDBEntities return RedirectToAction("Index"); } } 由于没有修改页面的视图,故而需要添加 完成具体修改SelectById代码 public ActionResult AddPage() { return View(); } public ActionResult AddPageInfo(string userName, string sex, int age