编辑器用于更改模型中的值
本文关键字:模型 用于 编辑器 | 更新日期: 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.aspxTextBoxFor -显示错误值
我不能添加这个作为评论,但是你有没有尝试过…
@Html.TextBoxFor(model => model.PassengerID, new { htmlAttributes = new { @class = "form-control" } })
代替EditorFor