簡體   English   中英

Asp.Net核心和腳手架

[英]Asp.Net Core and Scaffold

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'的定義,並且沒有擴展方法'Active'可以找到接受類型'CreateModel'的第一個參數(你是否缺少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");    
        }    
    }    
}

問題出在這一行:

@Html.DisplayNameFor(model => model.Active))

Create.cshtml ,使用它時, model引用CreateModel而不是Movie 相反,你需要:

@Html.DisplayNameFor(model => model.Movie.Active))

我在ASP.NET Core GitHub站點上提出了這個錯誤,並在.NET Core 2.0中修復了它: https//github.com/aspnet/Scaffolding/issues/830

但是看起來好像修復程序沒有移植到2.1所以我在這里提出了一個新的錯誤: https//github.com/aspnet/Scaffolding/issues/855

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM