MVC ActionResult 视图模型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MVC ActionResult 视图模型相关的知识,希望对你有一定的参考价值。

ViewResult,ContentResult,RedirectResult,RedirectToRouteResult,FileContentResult,JsonResult,HttpStatusCodeResult,PartialViewResult

[HttpGet]
        public ActionResult Login()
        {

            return View();//返回一个视图页面
        }
[HttpGet]
        public ActionResult Login1()
        {

            return Content("hello");//返回一个字符串
        }
[HttpGet]
        public ActionResult Login()
        {
       //Respones.Redirect 一个封装 
            return Redirect("http://wwww.baidu.com");//重定向
        }
//通过路由跳转到控制器
[HttpGet]
public ActionResult RedirectToAction() { //跳转到Action return RedirectToAction("Login1"); } [HttpGet] public ActionResult RedirectToAction2() { //跳转到指定控制器的Action return RedirectToAction("Index","Student"); }


 

File()返回文件,有两个参数,一个文件名,一个是内容类型,向客户端输出文件

有多个方法重载

[HttpGet]
public ActionResult GetFile(string filename)
{
string upload = "~/upload";
return File($@"{Server.MapPath(upload)}\\{filename}", "image/png");
}

可以在html中使用标签访问,也可以直接get请求获取图片

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
    <img src="Home/GetFile"    />
</body>
</html>

 上传文件控制器

string upload = "~/upload";
        [HttpPost]
        public ActionResult UploadFiles(HttpPostedFileBase file)
        {
            if (!Directory.Exists(Server.MapPath(upload)))
            {
                Directory.CreateDirectory(Server.MapPath(upload));
            }
            var filename = DateTime.Now.Ticks + file.FileName;
            file.SaveAs($@"{Server.MapPath(upload)}\\{filename}");
            return Content(filename);
        }
    <form action="/Home/UploadFiles" enctype="multipart/form-data" method="post">
        <input type="file" name="file" /><button>上传文件</button>
    </form>
    

 

向客户端输出Json格式数据 

        public ActionResult Json()
        {
            //默认是不支持Get请求的,需要指定允许
            return Json(new { id=1,name="blank"},JsonRequestBehavior.AllowGet);
        }

向客户端输出状态码,状态码状态很多,可以根据实际情况返回

    public ActionResult GetCode()
        {
            return new HttpStatusCodeResult(System.Net.HttpStatusCode.NotFound);
        }

 

//分部页面

        public ActionResult GetPartial()
        {
            //返回分部页面,类似一个Vue中的组件,可以在需要的地方重复使用
            return PartialView();
        }

可以在前端页面这样调用,类似使用组件

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

@Html.Action("GetPartial")

 

上面演示的带action处理的,还支持静态的页面

_Login.cshtml 分部页面内容

<input type="text"   name="name" value="" />
<input type="password"  name="pwd" value="" />
<button>登录</button>

  


@{
ViewBag.Title = "Index";
}

<h2>Index</h2>

@* 调用Action页面 *@
@Html.Action("GetPartial")
@* 调用静态页面,支持传参到页面 *@
@Html.Partial("_Login",new ASP.NET_MVC基础_2.Models.Student())

  

  

 

以上是关于MVC ActionResult 视图模型的主要内容,如果未能解决你的问题,请参考以下文章

.net MVC中ActionResult可以返回的视图

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

MVC中常见的ActionResult

如何在 .NET MVC3 中截获当前 actionresult 的输出流?

如何在 ASP.NET MVC 控制器中更改返回的 ContentType (ActionResult)

一个ActionResult中定位到两个视图—<团委项目>