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类然后通过控制器取数据