2021-03-26 乐帮网
razor pages netcore
ASP.Net Core Razor Pages项目中返回视图这一块可能会把很多人看懵,经过试验和测试我总结了一下返回试图的几种方式,希望对你有帮助。主要参考MVC视图做对比。
(1)默认提供的方式
public void OnGet() { }
public void OnPost() { }
这种方式默认是返回当前试图的,方法没有返回值。也可以有返回值,返回当前视图的话写法如下:
public IActionResult OnGet()
{
return Page();
}
(2)异步方法可返回当前视图或者其他视图
public async Task<IActionResult> OnPostAsync()
{
//await _context.SaveChangesAsync();
return RedirectToPage("./Index");
}
public async Task<IActionResult> OnGetAsync()
{
//await _context.SaveChangesAsync();
return RedirectToPage("./Index");
}
public void OnPostAsync() { }
public void OnGetAsync() { }
(3) 单独方法定义用于返回其它视图
public async Task<IActionResult> OnGetMyPageAsync()
{
await _context.SaveChangesAsync();
return RedirectToPage("./Index");
//return Page();
}
public ActionResult MyPage()
{
return Page();
}
访问链接:http://localhost:15928/home/index?handler=mypage
这个要注意,return Page()是返回的当前视图,即index.cshtml 并不是 MyPage.cshtml ,这个方法只相当于handler。要返回其它视图只能使用RedirectToPage方法。
正常的模式是一个视图绑定一个.cs控制器类,返回该视图要通过当前控制类的方法,而不是通过其它控制类返回视图,当前控制类只能跳转到其它视图。
(4)返回局部视图
public IActionResult ViewPart()
{
return Partial("MyPage2");
//return Partial("MyPage2",new { name="good"});
}
这个不多说,和MVC相差不大。
最后说一个有有趣的现象。在异步方法中我们定义如下:
public async Task<IActionResult> OnGetMyPageAsync
它生成的handler是mypage,要注意哈,不能写成OnGetAsyncMyPage。
在Pages项目中我们以前使用的HttpGet和 HttpPost这样的属性有了代替者,使用方法如下:
加前缀:OnPost /OnGet/OnPut ......
对于异步我们都会加上后缀Async,当然不加也行,只不过加上后解析方法时会自动忽略,例如OnGetMyPageAsync 实际上我们使用 handler=mypage可匹配到。
以上就是我的总结。
关注我的微信公众号
在公众号里留言交流
投稿邮箱:1052839972@qq.com
庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。
如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力