Razor 未使用对象数据填充编辑视图
我是ASP.Net的新手,需要一些帮助。。。我有一个ASP.NETCore1.1Web应用程序。在其中,我有一个“编辑”视图,用于编辑一个简单的对象,当路由到该对象时,相应的控制器会调用该对象。这是一种观点:Razor 未使用对象数据填充编辑视图,razor,asp.net-core-mvc,asp.net-core-1.1,Razor,Asp.net Core Mvc,Asp.net Core 1.1,我是ASP.Net的新手,需要一些帮助。。。我有一个ASP.NETCore1.1Web应用程序。在其中,我有一个“编辑”视图,用于编辑一个简单的对象,当路由到该对象时,相应的控制器会调用该对象。这是一种观点: @model InspectionsTestClient.Models.Property @{ ViewData["Title"] = "Edit"; } <h2>Edit</h2> @Html.ValidationSummary(); <fo
@model InspectionsTestClient.Models.Property
@{
ViewData["Title"] = "Edit";
}
<h2>Edit</h2>
@Html.ValidationSummary();
<form asp-action="Edit">
<div class="form-horizontal">
<h4>Property</h4>
<hr />
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="Id" />
<div class="form-group">
<label asp-for="UnitNumber" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="UnitNumber" class="form-control" />
<span asp-validation-for="UnitNumber" class="text-danger"></span>
</div>
</div>
<div class="form-group">
<label asp-for="BuildingName" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="BuildingName" class="form-control" />
<span asp-validation-for="BuildingName" class="text-danger"></span>
</div>
</div>
<div class="form-group">
<label asp-for="Street" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="Street" class="form-control" />
<span asp-validation-for="Street" class="text-danger"></span>
</div>
</div>
</div>
</form>
<div>
<a asp-action="Index">Back to List</a>
</div>
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
这就是模型:
namespace InspectionsTestClient.Models
{
//[Table("property")]
public class Property
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int? Id { get; set; }
[MaxLength(10, ErrorMessage = "Unit number too long")]
[Display(Name = "Unit #")]
public string UnitNumber { get; set; }
[MaxLength(45, ErrorMessage = "BuildingName name too long")]
public string BuildingName { get; set; }
[MaxLength(45, ErrorMessage = "Street too long")]
public string Street { get; set; }
}
}
因此,当我导航到该页面时,控制器启动,并返回编辑视图。我已确认填充了参数“id”。但是,当在浏览器中加载“编辑”视图时,所有输入文本框都为空。我希望它们预先填充有问题对象的值。我错过了什么
public class PropertyController
{
private readonly ApplicationDbContext _dbContext;
public PropertyController(ApplicationDbContext dbContext){
_dbContext = dbContext;
}
//GET: Property/Edit/5
public async Task<IActionResult> Edit(int id)
{
var property = await _dbContext.Property.FirstOrDefaultAsync(p => p.Id == id);
return View(property);
}
}
不是每件事都存在,但那是你冒险的一部分
并非每件事都存在,但这是你冒险的一部分。你遇到的问题之所以发生,是因为你没有将该对象返回视图。。实际上,在你的例子中,你甚至不需要到数据库去获取对象 您需要编辑
edit
操作,如下所示:
// GET: Property/Edit/5
public ActionResult Edit(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var object = db.TableName.Find(id);
// db = connectionstring
// TableName = database table that holds the object that you want to return
if (object == null)
{
return HttpNotFound();
}
return View(object);
}
让我知道这是否有帮助您遇到的问题是因为您没有将该对象返回到视图。。实际上,在你的例子中,你甚至不需要到数据库去获取对象 您需要编辑
edit
操作,如下所示:
// GET: Property/Edit/5
public ActionResult Edit(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var object = db.TableName.Find(id);
// db = connectionstring
// TableName = database table that holds the object that you want to return
if (object == null)
{
return HttpNotFound();
}
return View(object);
}
如果有帮助,请告诉我
// GET: Property/Edit/5
public ActionResult Edit(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var object = db.TableName.Find(id);
// db = connectionstring
// TableName = database table that holds the object that you want to return
if (object == null)
{
return HttpNotFound();
}
return View(object);
}