首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.Net核心MVC表单提交posts到数据库,但视图抛出错误

问.Net核心MVC表单提交posts到数据库,但视图抛出错误
EN

Stack Overflow用户
提问于 2019-12-03 16:52:28
回答 1查看 32关注 0票数 0

顾名思义,将数据发送到数据库不是问题。问题是一旦数据发布,网页本身会发生什么。基本上,我希望用户在提交表单后留在页面上。在添加了一家公司的详细信息后,用户单击submit,就会得到一条消息“add successful”,表单会被清除,然后就可以再提交一次了。

取而代之的是,数据被发送,但随后我得到一个错误:

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

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

型号代码:

代码语言:javascript
复制
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");

..。诸若此类。

控制器代码:

代码语言:javascript
复制
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();
        }
    }

查看代码:

代码语言:javascript
复制
<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的解决方案很有可能不适合我。例如,使用控制器搭建视图似乎不是我的选择。

EN

回答 1

Stack Overflow用户

发布于 2019-12-09 23:09:48

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

我仍然不知道上面的代码哪里出了问题,但更大的问题是我的方法。我从一开始就应该按照微软文档中的教程来做: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代码中是不存在的。现在我知道我可以做同样的事情,只需通过CLI。

因此,总的结论是:不要随意去搜索你想做的每一件小事的教程。只需遵循Microsoft文档中的教程,即可处理项目的大部分内容(如CRUD)。只要记住,当你安装他们在教程中告诉你要安装的软件包时,要知道你的.Net核心版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59153267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档