编辑器用于更改模型中的值

本文关键字:模型 用于 编辑器 | 更新日期: 2023-09-27 18:13:59

我遇到了一个问题,它看起来好像模型的值在视图中被改变:

视图:

@model StudentTransportation.Models.PassengerVM
<div class="form-group">
 @Html.LabelFor(model => model.PassengerID, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.PassengerID, new { htmlAttributes = new { @class = "form-control" } })
            @Html.ValidationMessageFor(model => model.PassengerID, "", new { @class = "text-danger" })
        </div>
 <div>

模型:

 public class PassengerVM
 {
    public int PassengerID { get; set; }
 }
 public PassengerVM()
 {
    PassengerID = 0;
 }

控制器:

public ActionResult AddCompanion()
    {
        var companion = new PassengerVM();
        return View("AddCompanion", companion);
    }
HTML:

 <div class="form-group">
    <label class="control-label col-md-2" for="PassengerID">PassengerID</label>
        <div class="col-md-10">
            <input class="form-control text-box single-line" data-val="true" data-val-number="The field PassengerID must be a number." data-val-required="The PassengerID field is required." id="PassengerID" name="PassengerID" type="number" value="1">
            <span class="field-validation-valid text-danger" data-valmsg-for="PassengerID" data-valmsg-replace="true"></span>
        </div>
  </div>

该值默认设置为0,但是在视图中显示为1。有什么建议吗?

当我添加@Model。将PassengerID放入HTML中,它将显示正确的值。但是文本框仍然显示1

编辑器用于更改模型中的值

您在某处有另一个名为@PassengerID的属性。当你这样做时:

@Html.TextBoxFor(model => model.PassengerID

model是一个HtmlHelper类型的对象,而不是PassengerVM!HtmlHelper类首先在URL上搜索属性,然后在HTTP post参数上搜索,最后在模型上搜索。然而,@ model。PassengerId直接到类型为PassengerVM的模型。

public ActionResult Edit(int id)
{
    Pet pet = new Pet();
    pet.Id = 7;
    // If you navigate to /Pet/Edit/1 then @Html.TextBoxFor(m => m.Id)
    // will show the Pet Id of "1" not "7"
    return View(pet);
}

看看其他人有类似问题的例子:

http://blogs.msdn.com/b/simonince/archive/2010/05/05/asp-net-mvc-s-html-helpers-render-the-wrong-value.aspx

TextBoxFor -显示错误值

我不能添加这个作为评论,但是你有没有尝试过…

@Html.TextBoxFor(model => model.PassengerID, new { htmlAttributes = new { @class = "form-control" } })

代替EditorFor