【发布时间】:2020-04-29 19:37:02
【问题描述】:
我已经使用 Visual Studio 2019 创建了一个创建视图(右键单击 > 添加 > 视图)并在这样做时设置了正确的模型。创建 Create 视图后,我将代码添加到 Create HttpPost ActionMethod 并尝试运行该应用程序。 ActionMethod 被命中,但是应该传入该方法的数据模型没有被填充;尽管在浏览器中输入了数据,但一切都是空的。奇怪的是,我在应用程序中的其他页面以完全相同的方式创建(甚至其他区域上的其他创建)也可以正常工作。我错过了什么?
型号:
public class BondsAllProjectsModel
{
[Key]
public int ProjectID { get; set; }
[Display(Name = "Project Name")]
[Required (ErrorMessage = "Project Name is required.")]
[StringLength(50)]
public string ProjectName { get; set; }
[Display(Name = "Project Name Alias")]
[StringLength(50)]
public string ProjectNameAlias { get; set; }
[StringLength(50)]
public string Municipality { get; set; }
[StringLength(4)]
public string ProjectCode { get; set; }
public bool IsProject { get; set; }
[RegularExpression(@"^[0-9]*\.?[0-9]*", ErrorMessage = "Only numbers are allowed.")]
public double? ProjectAcres { get; set; }
[RegularExpression(@"\d+", ErrorMessage = "Only numbers are allowed.")]
public double? ProjectUnits { get; set; }
public int? MunicipalityID { get; set; }
[DataType(DataType.Date, ErrorMessage = "Project Completed must be a valid date.")]
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
public DateTime? ProjectCompleted { get; set; }
[MaxLength(100)]
public string CurrentNotes { get; set; }
public int? ProjectTypeID { get; set; }
public bool Discontinued { get; set; }
}
查看:
@model BOnlineMVC.Models.BondsAllProjectsModel
@{
ViewData["Title"] = "Create";
}
<h1>Create</h1>
<h4>BondsAllProjectsModel</h4>
<hr />
<div class="row">
<div class="col-md-4">
<form asp-action="Create" method="post">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="ProjectID" class="control-label"></label>
<input asp-for="ProjectID" class="form-control" />
<span asp-validation-for="ProjectID" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="ProjectName" class="control-label"></label>
<input asp-for="ProjectName" class="form-control" />
<span asp-validation-for="ProjectName" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="ProjectNameAlias" class="control-label"></label>
<input asp-for="ProjectNameAlias" class="form-control" />
<span asp-validation-for="ProjectNameAlias" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Municipality" class="control-label"></label>
<input asp-for="Municipality" class="form-control" />
<span asp-validation-for="Municipality" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="ProjectCode" class="control-label"></label>
<input asp-for="ProjectCode" class="form-control" />
<span asp-validation-for="ProjectCode" class="text-danger"></span>
</div>
<div class="form-group form-check">
<label class="form-check-label">
<input class="form-check-input" asp-for="IsProject" /> @Html.DisplayNameFor(model => model.IsProject)
</label>
</div>
<div class="form-group">
<label asp-for="ProjectAcres" class="control-label"></label>
<input asp-for="ProjectAcres" class="form-control" />
<span asp-validation-for="ProjectAcres" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="ProjectUnits" class="control-label"></label>
<input asp-for="ProjectUnits" class="form-control" />
<span asp-validation-for="ProjectUnits" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="MunicipalityID" class="control-label"></label>
<input asp-for="MunicipalityID" class="form-control" />
<span asp-validation-for="MunicipalityID" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="ProjectCompleted" class="control-label"></label>
<input asp-for="ProjectCompleted" class="form-control" />
<span asp-validation-for="ProjectCompleted" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="CurrentNotes" class="control-label"></label>
<input asp-for="CurrentNotes" class="form-control" />
<span asp-validation-for="CurrentNotes" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="ProjectTypeID" class="control-label"></label>
<input asp-for="ProjectTypeID" class="form-control" />
<span asp-validation-for="ProjectTypeID" class="text-danger"></span>
</div>
<div class="form-group form-check">
<label class="form-check-label">
<input class="form-check-input" asp-for="Discontinued" /> @Html.DisplayNameFor(model => model.Discontinued)
</label>
</div>
<div class="form-group">
<input type="submit" value="Create" class="btn btn-primary" />
</div>
</form>
</div>
</div>
<div>
<a asp-action="Index">Back to List</a>
</div>
控制器:
[HttpPost]
public ActionResult Create(BondsAllProjectsModel projectData)
{
try
{
if (ModelState.IsValid)
{
int newProjectID = bDAL.AddProject(projectData);
return Redirect("~/Bonds/ProjectMaintenance/Create2/" + newProjectID);
}
else
{
return View();
}
}
catch
{
return View();
}
}
【问题讨论】:
标签: asp.net-core model-view-controller