Action方法是在Controllers中定义公共方法使用路由规则将客户端的请求和action方法做映射
Action
public IActionResult NameOfAction()
{
return View();
}
这个方法返回一个IActionResult并且方法名称为NameOfAction,action方法返回类型可以是像C#函数中的任意类型,IActionResult,ActionResult,JsonResult,string,StatusCodeResult等类型。
1. Action将Model传递给View
Models包含C#数据类型像string,int,float等
Models包含C#类,像Employee.cs,Person.cs等
2.ViewResult对象
方法 | 描述 |
---|---|
View() | 使用默认视图来渲染,例如:如果一个action方式List并且使用没有参数View()方法,List.chtml视图被呈现。 |
View("name_of_view") | 这个版本在参数中传递一个视图名称并且呈现该视图,例如:如果你使用View("Show"),然而你Show.chtml将被呈现 |
View(model) | 这个版本给默认视图提供model数据,这个通常被使用在View中呈现强类型 |
View("name_of_view",model) | 指定一个视图名称并且给指定视图提供model数据 |
3.将数据从Action传递到View
- ViewBag
ViewBag是个Dynamic对象,允许你自定义属性,ViewBag的值被传输到视图并展示在UI上
ViewBag.CurrentDateTime=DateTime.Now
注意
- ViewBag是一种轻量化方式从Controllers到Views传输数据。
- ViewBag只能传输数据从action到view,如果在action方法中发生跳转,ViewBag数据就会丢失
- 可以包含原始类型或者复杂类型对象
- 每次ViewBag值读取之后,dotnet会从内存中移除,如果想要重复使用这些数据,必须将它们存在变量中。 - TempData
-在跳转过程不会丢失,与ViewBag一样,读取TempData的值后立即自动删除这些值。 - Session Variable
Session存储的数据可以在同一个客户端不同的请求中共享
首先需要启用Session
启用Session服务
builder.Services.AddSession()
builder.Services.AddSingletopm<IHttpContextAccessor,HttpContextAccesstor>()
app.UseSession()
4.Action方法调转方式
- Redirect
返回一个RedirectResult类。使用跳转url字符串参数,临时跳转 - RedirectPermanent
永久跳转,url字符串参数 - RedirectToRoute
执行一个临时跳转并使用匿名类型作为参数,匿名类型的参数传递到路由系统来生成url. - RedirectToRoutePermanent
永久跳转 匿名类型的参数 - RedirectToAction
临时跳转到给与的action方法,这个方法返回一个RedirectToActionResult的一个实例。 - RedirectToActionPermanent
永久跳转。
5.Action方法返回不同类型的Content
-
返回Json
使用Json()方法可以从Action方法返回JsonResult类。 -
Action返回BadRequest(400),Unauthorized(401),NotFound(404)状态码