用一个有ID的模型加载一个局部视图.BeginForm返回编辑过的模型,但ID丢失
本文关键字:一个 ID 模型 编辑 丢失 返回 视图 加载 局部 BeginForm | 更新日期: 2023-09-27 18:11:32
我有一个模型:
public class Wellbore
{
public int Id { get; set; }
[DisplayName("Planned Depth")]
public double PlannedDepth { get; set; }
[DisplayName("Reference Depth")]
public double ReferenceDepth { get; set; }
[DisplayName("Reference Point")]
public string ReferencePoint { get; set; }
[DisplayName("Use Section List")]
public bool UseSectionList { get; set; }
[DisplayName("Well Fluid Specific Gravity")]
public double WellFluidSpecificGravity { get; set; }
public List<WellboreSection> WellboreSections { get; set; }
public int WellId { get; set; }
}
我有一个控制器
public ActionResult Index(int wellId)
{
var wellbore = _service.FindBy(x => x.Id == wellId).SingleOrDefault();
return PartialView("~/Views/WellManagement/Wellbore.cshtml", wellbore);
}
[AcceptVerbs(HttpVerbs.Post)]
public void Wellbore_Edit([DataSourceRequest] DataSourceRequest request, Wellbore wellbore)
{
if (wellbore != null && ModelState.IsValid)
{
wellbore = _service.Edit(wellbore);
}
}
和视图....
@using (Html.BeginForm("Wellbore_Edit", "Wellbore", FormMethod.Post, new {@class = "form-horizontal"}))
{
<div class="form-group">
@Html.LabelFor(m => m.Id, new { @class = "col-md-3 control-label" })
<div class="col-md-3">
@Html.TextBoxFor(m => m.Id, new { @class = "form-control", disabled = "disabled" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.ReferenceDepth, new { @class = "col-md-3 control-label" })
<div class="col-md-3">
@Html.TextBoxFor(m => m.ReferenceDepth, new { @class = "form-control" })
</div>
</div>
等等....
当我在控制器中使用Index方法加载视图时,一切工作正常。对象包含所有合适的值。
当我在视图中完成编辑时,我单击保存,然后表单返回。我在井筒参数中收到一个对象,如果我查看它,所有属性都有值,除了Id和WellId....
在表单中没有使用welid,所以我可以理解,但是Id是防御性的使用。为什么它不在物体返回的路上呢?这些对象是如何创建的?这个内部函数是什么....
这是因为disabled =" disabled"请使用@readonly="readonly"来代替禁用的
@Html.TextBoxFor(m => m.UserName, new {@readonly="readonly"})