.Net MVC 的学习

MVC 的学习

强弱视图

1.强视图

若在控制器中使用 ViewData["data"]来存储数据,在前台页面使用的时候会需要转型,比较麻烦,而强视图为我们解决了麻烦

它可以在Models中添加一个作为强类型的实体 并可以用viewData传递到视图

平常使用的ViewPage<result.>修改成viewPage<Models.ResultDetailModel>即可直接在界面中调用

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AssetCaModel.Models
{
    public class ResultDetailModel
    {
        public string TypesName { get; set; }
        public double Asset_Revenue { get; set; }
        public double Asset_Balance { get; set; }
        public DateTime Expend_date { get; set; }
        public string User_Name { get; set; }
        
    }
}

2.弱视图

除了强类型以外视图还可以方位弱类型的数据集合,弱视图不显式声明要使用的数据类型。可以用弱类型数据集合将少量数据传入传出控制器和视图

ViewData

上面有提到viewdata 它是通过string键访问的ViewDataDictionary对象。这些字符串数据可以直接存储和使用,不需要强转

但在取值的时候必须将其强转为特定类型

public IActionResult SomeAction()
{
    ViewData["Greeting"] = "Hello";
    ViewData["Address"]  = new Address()
    {
        Name = "Steve",
        Street = "123 Main St",
        City = "Hudson",
        State = "OH",
        PostalCode = "44236"
    };
 
    return View();
}

在视图中:


@{
    // Since Address isn't a string, it requires a cast.
    var address = ViewData["Address"] as Address;
}
 
@ViewData["Greeting"] World!
 
<address>
    @address.Name<br>
    @address.Street<br>
    @address.City, @address.State @address.PostalCode

</address>

ViewBag

ViewBag是DynamicViewData对象,可提供对存储在viewdata中对象的动态访问,因此更方便,不需要强转


public IActionResult SomeAction()
{
    ViewBag.Greeting = "Hello";
    ViewBag.Address  = new Address()
    {
        Name = "Steve",
        Street = "123 Main St",
        City = "Hudson",
        State = "OH",
        PostalCode = "44236"
    };
 
    return View();
}

在视图中:

@ViewBag.Greeting World!
 
<address>
    @ViewBag.Address.Name<br>
    @ViewBag.Address.Street<br>
    @ViewBag.Address.City, @ViewBag.Address.State @ViewBag.Address.PostalCode
</address>

TempData

tempdata是继承自tempdatadictionary类的字典对象,默认情况下是基于session存储机制之上的

tempdata是用来在多个actions或者从当前请求向子请求,页面发生了重定向时传递共享数据

与上面类似

也是先创建model类然后通过控制器取数据

posted @ 2021-04-07 15:40  是我,米老鼠  阅读(69)  评论(0编辑  收藏  举报