用一个有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是防御性的使用。为什么它不在物体返回的路上呢?这些对象是如何创建的?这个内部函数是什么....

用一个有ID的模型加载一个局部视图.BeginForm返回编辑过的模型,但ID丢失

这是因为disabled =" disabled"请使用@readonly="readonly"来代替禁用的

@Html.TextBoxFor(m => m.UserName, new {@readonly="readonly"})