mysql - .Net Core MVC 表单提交发布到数据库,但 View 抛出错误

标签 mysql model-view-controller visual-studio-code asp.net-core-3.0

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

相反,数据被发送,但随后我收到错误:

InvalidOperationException:未找到 View “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");

...等等。

Controller 代码:

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 的解决方案很可能无法解决此问题。例如,使用 Controller 来构建 View 似乎不是我的选择。

最佳答案

不完全确定这在技术上是否应该是一条评论,但我解决了问题。

我仍然不知道上面的代码哪里出了问题,但更大的问题是我的方法。我从一开始就应该做的就是按照微软文档中的教程进行操作:https://learn.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/adding-model?view=aspnetcore-3.1&tabs=visual-studio

我不知道可以通过一些简单的命令来完成模型/ View / Controller 的脚手架 CRUD 代码。我认为这样的脚手架只适用于 Visual Studio,因为当我右键单击 YouTube 教程上的内容时,使用 VS Code 时,脚手架选项不适合我。现在我知道我可以通过 CLI 做同样的事情。

因此,总体要点是:不要随意搜索您想做的每件小事的教程。只需按照 Microsoft 文档中的教程进行操作即可处理项目的大部分内容(例如 CRUD)。当您安装教程中告诉您安装的软件包时,请记住了解您的 .Net Core 版本。

关于mysql - .Net Core MVC 表单提交发布到数据库,但 View 抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59153267/

相关文章:

php - 如何更改插入数据库的日期的时区?

PHP MVC 和 SQL 减去模型

model-view-controller - 将客户端MVC/MVVM模式与MVC服务器端模式一起使用

node.js - 无人值守循环时,console.log() 为 "Canceled"

Python 泛型继承和 vscode 智能感知 (MSLS)

visual-studio-code - VSCode 和 Windows 终端预览

mysql - 具有主键重复的更新语句

PHP,从 MySQL 数据库读取 8 字节整数?

mysql - 如何将 find_in_set(value, column) 与类似 %% 值一起使用

javascript - Backbone js MVC 语义建议