【发布时间】:2020-01-10 01:29:57
【问题描述】:
我正在尝试在 ASP.NET Core 中创建一个存储库网站。我有一个 Web 表单,它应该将数据传递到数据库。
我认为数据库连接有效,因为当我输入“dotnet ef 数据库更新”时,它创建了一个包含我模型中的列的表。在我的控制器中,我在应该发布的操作上有一个 [HttpPost] 标签,并且我还注入了一个模型。
很遗憾,当我提交表单时,我收到一个错误:
Microsoft.AspNetCore.Server.Kestrel[13] 连接 id "0HLPJH54HAOGK", 请求 id “0HLPJH54HAOGK:0000000B”:引发了未处理的异常 由应用程序。 System.NullReferenceException:对象引用 未设置为对象的实例。
也没有数据传递到数据库。
控制器:
namespace ASP.Controllers
{
public class ResolutionController : Controller
{
private readonly ResolutionContext _context;
public ResolutionController(ResolutionContext context)
{
_context = context;
}
public IActionResult ShowAll()
{
return View(_context.Resolutions.ToList());
}
[HttpGet]
public IActionResult AddResolution()
{
return View();
}
[HttpPost]
public IActionResult AddResolution(Resolution resolution)
{
if (ModelState.IsValid)
{
_context.Resolutions.Add(resolution);
_context.SaveChanges();
return View("AddResolution");
}
return View("ShowAll");
}
}
}
型号:
namespace ASP.Models
{
public class ResolutionContext : DbContext
{
public ResolutionContext(DbContextOptions<ResolutionContext> options)
: base(options)
{
}
public DbSet<Resolution> Resolutions { get; set; }
}
public class Resolution
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string ResolutionFilePath { get; set; }
public DateTime DateOfAdopting { get; set; }
}
}
添加分辨率视图
@model Resolution
@{
ViewData["Title"] = "Dodaj uchwałę";
}
<div class="section both-sections" >
<div class="left-side-section">
dummy
</div>
<div id="right-side-section">
@using (Html.BeginForm())
{
<form asp-controller="Resolution" asp-action="AddResolution"
method="post">
<h2>Insert Resolution</h2>
<ul class="add-resolution-list">
<li>
<label for="name"></label>
<input asp-for="Name" class="input-fields">
</li>
<li>
<label for="description"></label>
<input type="text" asp-for="Description" class="input-fields">
</li>
<li>
<label for="date"></label>
<input type="date" asp-for="DateOfAdopting" class="input-fields">
</li>
<li>
<label for="resolution"></label>
<input type="file" name="resolution" class="input-fields">
</li>
<li>
<input type="submit" name="submit-button" value="Add Resolution">
</li>
</ul>
</form>
}
</div>
</div>
还有 ShowAll 操作:
@model IEnumerable<Resolution>
<p>ViewResolution</p>
@foreach (var item in Model)
{
<div>
@Html.DisplayFor(modelItem => item.Name)
</div>
}
我希望它可以将数据从表单写入数据库,但结果却出错了。
【问题讨论】:
标签: asp.net asp.net-mvc entity-framework data-binding