。Net Core MVC表单提交到数据库,但是视图抛出错误

问题描述 投票:0回答:1

正如标题所示,将数据发布到数据库不是问题。问题是一旦发布数据,网页本身会发生什么。基本上,我希望用户在提交表单后留在页面上。在添加了有关公司的详细信息之后,用户单击提交,得到一条消息,提示“添加成功”,表单将清除,然后可以进行其他提交了。

相反,数据已发送,但随后出现错误:

InvalidOperationException:找不到视图'AddCompany'。搜索了以下位置:/Views/AddCompany/AddCompany.cshtml/Views/Shared/AddCompany.cshtml

为了节省空间,我不会在每个部分显示所有代码,但希望您能理解。

型号代码:

protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<CommunicationDetails>(entity =>
            {
                entity.HasKey(e => e.FirstContactDate)
                    .HasName("PRIMARY");

                entity.Property(e => e.FirstContactDate).HasColumnType("date");

                entity.Property(e => e.CompanyName)
                    .IsRequired()
                    .HasColumnType("varchar(50)")
                    .HasCharSet("latin1")
                    .HasCollation("latin1_swedish_ci");

                entity.Property(e => e.FirstContactMethod)
                    .IsRequired()
                    .HasColumnType("varchar(20)")
                    .HasCharSet("latin1")
                    .HasCollation("latin1_swedish_ci");

...依此类推。

控制器代码:

namespace dotnetproject2.Controllers
{
    public class AddCompanyController : Controller
    {
        public IActionResult AddCompany()
        {
            return View();
        }

    [HttpPost]
        public IActionResult AddCompany (CompanyDetails company) {
            if (ModelState.IsValid)
            {
                using (AddCompanyContext db = new AddCompanyContext())
                {
                    db.CompanyDetails.Add(company);
                    db.SaveChanges();
                }
                ModelState.Clear();
                ViewBag.Message = company.companyName + " has been added.";
            }
            return View();
        }
    }

查看代码:

<form id="company-form" asp-controller="AddCompany" asp-action="AddCompany" method="post">
            <div class="form-group">
                <label class="col-sm-4" for="companyName">Company Name</label>
                <input type="text" asp-for="companyName" id="companyName" class="form-control-sm col-sm-6">
            </div>      
            <div class="form-group">
                <label class="col-sm-4" for="publicEmail">Public Email</label>
                <input type="text" asp-for="publicEmail" id="publicEmail" class="form-control-sm col-sm-6">
            </div>
            <div class="form-group">
                <label class="col-sm-4" for="contactPersonOne">Contact Person 1</label>
                <input type="text" asp-for="contactPersonOne" id="contactPersonOne" class="form-control-sm col-sm-6">
            </div>

很抱歉,如果这篇文章太长了。不确定要包含多少代码。请也忽略怪异的缩进;在我的IDE中一切正常。

而且,我正在使用VS Code,所以很有可能基于Visual Studio的解决方案无法解决我的问题。例如,对我来说,使用控制器来支撑视图似乎不是一种选择。

mysql model-view-controller visual-studio-code asp.net-core-3.0
1个回答
0
投票

不确定从技术上来说这是否应该做评论,但我解决了问题。

我仍然不知道上面的代码在哪里出了问题,但是更大的问题是我的方法。从一开始我应该做的只是遵循Microsoft文档中的教程:https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/adding-model?view=aspnetcore-3.1&tabs=visual-studio

我不知道可以通过一些简单的命令为模型/视图/控制器搭建CRUD代码。我认为类似的脚手架仅适用于Visual Studio,因为当我右键单击类似YouTube教程中的脚手架时,使用VS Code的脚手架选项不适合我。现在,我知道可以通过CLI进行相同的操作。

因此,总体要点是:不要随便去寻找您想做的每件事的教程。只需按照Microsoft文档中的教程来处理项目的大部分内容(如CRUD)即可。只需记住在安装软件包时会告诉您.Net Core版本即可。

© www.soinside.com 2019 - 2024. All rights reserved.