.net mvc ActionResult基本用法整理

已被阅读 711 次 | 文章分类:csharp | 2021-12-20 01:02

ActionResult返回视图的几种基本用法整理

1 返回简单视图

首先新建一个.net mvc工程,找到默认的HomeController.cs中Index方法

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

在Views文件夹中会有跟方法同名的Index.cshtml文件,我们将默认的内容删除,修改为如下:

                                            
@{
    ViewBag.Title = "Home Page";
    Layout = "";
}
 
<h1>小白GIS</h1>
                                            
                                        

因为默认的Index.cshtml会有默认的母版页,也就是框架页,这里我们设置为不用母版页;效果如下

/net/upload/image/20211220/d6d8049b-4c49-462d-ab60-7cc9866f7211.jpg

return View()方法会默认去找跟方法名同名的视图;当然你也可以自建新建一个ActionResult的方法,然后在VIews文件夹中新建一个同名的cshtml文件,就不演示了;已经有工程自动生成的About.cshtml和Contact.chtml;

2 返回传值普通对象的视图

上面只是返回视图,这里,带上一个对象返回给视图,然后在视图中使用;

2.1 首先在Models文件夹下新建一个User类

                                            
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
 
namespace WebApplication3.Models
{
    public class User
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public string Sex { get; set; }
    }
}
                                            
                                        

2.2 HomeController.cs中引入Models模块,目的为了能使用里面的类

                                            
using WebApplication3.Models;
                                            
                                        

2.3 新建一个 ActionResult方法GetUser,如下

                                            
public ActionResult GetUser()
{
 
    User user = new User
    {
        Name = "小白GIS",
        Age = 5,
        Sex = "男"
    };
    return View(user);
}
                                            
                                        

2.4 在Views文件夹下新建GetUser.cshtml视图

或者可以直接右键上面的方法,添加视图;

                                            
@model WebApplication3.Models.User
@{
    Layout = null;
}
 
<div>
    @Model.Name<br />
    @Model.Agee<br />
    @Model.Sexe<br />
</div>
                                            
                                        

因为ActionResult返回的就是一个User对象,所以获取的时候在最顶部将User对象作为当前视图的全局Model对象,看就可以通过Model获取数据了;@model 后面跟的是的你User对象所在的工程路径,替换为自己的即可。声明时用model关键字,使用时用Model对象,他们不是一个东西

/net/upload/image/20211220/1df9fb3f-0a42-4743-82ad-c49dd524e21a.jpg

3 返回传值List的视图

3.1 新建ActioResult方法GetUserList

                                            
public ActionResult GetUserList()
{
    List<User> list = new List<User> {
        new User
        {
            Name = "小白GIS",
            Age = 5,
            Sex = "男"
        },
        new User
        {
            Name = "小白GIS 1",
            Age = 6,
            Sex = "女"
        },
        new User
        {
            Name = "小白GIS 2",
            Age = 6,
            Sex = "男"
        }
    };
    return View(list);
}
                                            
                                        

3.2 新建视图GetUserList.cshtml

                                            
@model List<WebApplication3.Models.User>
@{
    Layout = null;
}
 
<div>
    @foreach (var user in Model)
    {
        @user.Name<br />
        @user.Age<br />
        @user.Sex<br />
        <hr />
    }
</div>
                                            
                                        

然后启动IIS Express查看效果,记住如果只是修改视图,则右键预览即可,如果修改了Controller则需要重新启动IIS Express服务器

/net/upload/image/20211220/1d137d10-14fd-45d4-9b66-e0e2e7c13803.jpg

这里我们将Model对象指向User List列表,所以可以用foreach遍历操作;

4 返回传值的分部视图(PartialView)

分部视图文件,一般放在Share文件夹,因为它作为一个页面的一部分,可以共享使用;接下来在Index首页中使用分部视图,并传值给分部视图

4.1 首先认识下分部视图如何使用

(1) 在Shared文件夹下新建一个视图文件CommonInfo.cshtml

                                            
<div style="color:purple;">
    我是分部视图,存储一些共享可被多次使用的信息
</div>
                                            
                                        

/net/upload/image/20211220/1e744c7e-d95b-4e18-a377-0791c4230d98.jpg

(2) 在需要渲染分部视图内容的地方引入@Html.Partial("CommonInfo.cshtml");

                                            
@{
    ViewBag.Title = "Home Page";
    Layout = "";
}
 
<h1>小白GIS</h1>
<hr />
<h1>下面的内容来自分部视图文件</h1>
@Html.Partial("~/Views/Shared/CommonInfo.cshtml");
                                            
                                        

效果如下:

/net/upload/image/20211220/eb1dc7e8-54eb-4f2b-a170-3523ecc94cba.jpg

4.2 如何利用ActionResult返回分部视图并传值

(1) 在Index.cshtml中要渲染分部视图的地方添加Html.RenderAction(),如下

                                            
@{
    ViewBag.Title = "Home Page";
    Layout = "";
}
 
<h1>小白GIS</h1>
<hr />
<h1>下面的内容来自分部视图文件</h1>
@*@Html.Partial("~/Views/Shared/CommonInfo.cshtml")*@
@{Html.RenderAction("GetCommonInfo")}
                                            
                                        

GetCommonInfo是HomeController中的方法名;

(2) 添加方法GetCommonInfo

方法中返回一个PartialView,第一个参数是分部视图的名称,第二个参数是传过去的Model值

                                            
        public ActionResult GetCommonInfo() {
            User user = new User
            {
                Name = "公共用户",
                Age = 15,
                Sex = "男"
            };
            return PartialView("CommonInfo", user);
        }
                                            
                                        

CommonInfo.cshtml

                                            
@model WebApplication3.Models.User
@{
    Layout = null;
}
 
<div>
    <div style="color:purple;">
        我是分部视图,存储一些共享可被多次使用的信息<br />
        @Model.Name<br />
        @Model.Age<br />
        @Model.Sex<br />
    </div>
</div>
                                            
                                        

/net/upload/image/20211220/d45724e2-732b-443f-b5d0-f1e3bbfd3bd3.jpg

如上可以将值传到分部视图

所以渲染分部视图最常见的如上两种方式,一种直接渲染视图,另一种通过控制器方法跳转到视图,中间可以传值过去;更加高级一点

QQ:3410192267 | 技术支持 微信:popstarqqsmall

Copyright ©2017 xiaobaigis.com . 版权所有 鲁ICP备17027716号