1 using system; 2 using system.collections.generic; 3 using system.linq; 4 using system.threading.tasks; 5 using microsoft.aspnetcore.mvc; 6 using microsoft.aspnetcore.mvc.razorpages; 7 using microsoft.entityframeworkcore; 8 using razorpagesmovie.data; 9 using razorpagesmovie.models; 10 11 namespace razorpagesmovie 12 { 13 public class indexmodel : pagemodel 14 { 15 private readonly razorpagesmovie.data.razorpagesmoviecontext _context; 16 17 public indexmodel(razorpagesmovie.data.razorpagesmoviecontext context) 18 { 19 _cOntext= context; 20 } 21 22 public ilist movie { get;set; } 23 24 public async task ongetasync() 25 { 26 movie = await _context.movie.tolistasync(); 27 } 28 } 29 }
① 第13行:表示该razor页面派生自pagemodel。约定:pagemodel派生的类称为model。
② 第17行:表示这是一个构造函数,使用依赖关系注入将razorpagesmoviecontent添加到页。所有已搭建基架的页面都遵循这个模式。
③ 第24行:表示对页面发出请求时,ongetasync方法向razor页面返回影片列表。调用ongetasync或onget以初始化页面的状态。ongetasync方法将获得的影片列表显示出来。当onget返回void或ongetasync返回task时,使用任何返回语句。因为此时返回的movie对象,在程序中做了定义(第22行)
1 using system; 2 using system.collections.generic; 3 using system.linq; 4 using system.threading.tasks; 5 using microsoft.aspnetcore.mvc; 6 using microsoft.aspnetcore.mvc.razorpages; 7 using microsoft.aspnetcore.mvc.rendering; 8 using razorpagesmovie.data; 9 using razorpagesmovie.models; 10 11 namespace razorpagesmovie 12 { 13 public class createmodel : pagemodel 14 { 15 private readonly razorpagesmovie.data.razorpagesmoviecontext _context; 16 17 public createmodel(razorpagesmovie.data.razorpagesmoviecontext context) 18 { 19 _cOntext= context; 20 } 21 22 public iactionresult onget() 23 { 24 return page(); 25 } 26 27 [bindproperty] 28 public movie movie { get; set; } 29 30 // to protect from overposting attacks, please enable the specific properties you want to bind to, for 31 // more details see https://aka.ms/razorpagescrud. 32 public async task onpostasync() 33 { 34 if (!modelstate.isvalid) 35 { 36 return page(); 37 } 38 39 _context.movie.add(movie); 40 await _context.savechangesasync(); 41 42 return redirecttopage("./index"); 43 } 44 } 45 }
① 第1行:@page指令,它是一个razor指令的一个示例。该指令表示将文件[email protected]age必须是页面上第一个razor指令。
② 第17-26行:@html 这是一系列的使用lambda表达式的html帮助程序。displaynamefor html帮助程序检查lambda表达式引用的tile、releasedate等属性来确定显示名称。检查lambda表达式(而非求值),意味着model、model.movie或model.movie[0]为null或空时,不会存在任何访问冲突。
③ 第35-44行:@html.displayfor是对lambda表达式进行求值,将获得该模型的属性值。