顾名思义,将数据发送到数据库不是问题。问题是一旦数据发布,网页本身会发生什么。基本上,我希望用户在提交表单后留在页面上。在添加了一家公司的详细信息后,用户单击submit,就会得到一条消息“add successful”,表单会被清除,然后就可以再提交一次了。
取而代之的是,数据被发送,但随后我得到一个错误:
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的解决方案很有可能不适合我。例如,使用控制器搭建视图似乎不是我的选择。
发布于 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核心版本。
https://stackoverflow.com/questions/59153267
复制相似问题