【发布时间】:2018-03-03 03:41:35
【问题描述】:
Asp.Net Razor Page的自动脚手架生成是否兼容bool数据类型?
我问这个问题,因为我正在学习本教程:https://docs.microsoft.com/en-us/aspnet/core/tutorials/razor-pages/model。在某个时刻,在创建 POCO 类、配置 dbContext 和迁移之后,我运行了这个命令来自动生成脚手架
dotnet aspnet-codegenerator razorpage -m Movie -dc MovieContext -udl -outDir Pages\Movies --referenceScriptLibraries
它很漂亮,但如果我的 POCO 类没有 bool 类型,它就可以工作。
示例 POCO 类:
using System;
namespace RazorPagesMovie.Models
{
public class Movie
{
public int ID { get; set; }
public string Title { get; set; }
public DateTime ReleaseDate { get; set; }
public string Genre { get; set; }
public bool Active { get; set; }
}
}
通过这个实现,当我尝试创建电影时,我会得到这个错误:
“CreateModel”不包含“Active”的定义,并且找不到接受“CreateModel”类型的第一个参数的扩展方法“Active”(您是否缺少 using 指令或程序集引用?)
有什么想法吗?
也许是我使用 SQLite 作为数据库这一事实的必要信息...
还有 CreateModel 类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.AspNetCore.Mvc.Rendering;
using RazorPagesMovie.Models;
namespace RazorPagesMovie.Pages.Movies
{
public class CreateModel : PageModel
{
private readonly RazorPagesMovie.Models.MovieContext _context;
public CreateModel(RazorPagesMovie.Models.MovieContext context)
{
_context = context;
}
public IActionResult OnGet()
{
Movie = new Movie
{
Title = "The Good, the bad, and the ugly",
Genre = "Western",
Price = 1.19M,
ReleaseDate = DateTime.Now,
Active = true
};
return Page();
}
[BindProperty]
public Movie Movie { get; set; }
public async Task<IActionResult> OnPostAsync()
{
if (!ModelState.IsValid)
{
return Page();
}
_context.Movie.Add(Movie);
await _context.SaveChangesAsync();
return RedirectToPage("./Index");
}
}
}
【问题讨论】:
-
CreateModel 类的外观如何?您在此处添加了 Movie 类。
-
示例可以在github.com/aspnet/Docs/blob/master/aspnetcore/tutorials/… 下载,但是必须将 DbContext 更改为 SQLite 并将 POCO 的一个属性更改为 bool
-
除了您显示的代码之外,您引用
Active的代码中还有其他地方吗?这似乎是一个编译问题,那么它到底出现在哪里? -
它出现在网页中,当我点击创建链接时,它是由脚手架创建的。
标签: c# asp.net razor asp.net-core scaffolding