这是一个概念性问题。
据我所知,MVC具有无国籍的性质。 当我在浏览器中点击重新加载(F5)时,我在视图中编写或更改的值不会消失,也不会被模型中的原始值替换。
有谁知道为什么会这样? 我假设在我重新加载页面的那一刻,修改后的“未提交”值应该消失。
我的观点只是剃刀代码......我不使用网页表单(我的意思是,我的应用程序中没有.aspx页面)
@model PruebaMVC.Models.DatosLINQ.OPERACION
@{
ViewBag.Title = "Edit";
}
<h2>Editar Operación</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Operación</legend>
@Html.HiddenFor(model => model.IDOperacion)
<div class="editor-label">
@Html.LabelFor(model => model.FechaOperacion, "Fecha de la Operación")
</div>
<div class="editor-field">
@Html.EditorFor(model => model.FechaOperacion)
@Html.ValidationMessageFor(model => model.FechaOperacion)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Comision, "Comisión")
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Comision)
@Html.ValidationMessageFor(model => model.Comision)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Legajo, "Número de Legajo")
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Legajo)
@Html.ValidationMessageFor(model => model.Legajo)
</div>
<p>
<input type="submit" class="formbutton" value="Guardar Cambios" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Volver al listado de Operaciones", "Index")
</div>
我希望不要通过提出概念性问题来对网站施加任何规则。如果我,请告诉我,所以我不再这样做了。
答案 0 :(得分:1)
ASP.NET MVC HTML帮助程序将使用发布的值重新创建表单。如果要确保将模型的值推送到视图中,请将其从控制器中的模型状态中删除。
您可以使用
public ActionResult MyController (MyModel model)
{
if (ModelState.IsValid)
{
ModelState.Clear ();
}
return View (model);
}
或者您可以删除要更新的特定项目
public ActionResult MyController (MyModel model)
{
if (ModelState.IsValid)
{
ModelState.Remove ("PropertyNameToRemove");
}
return View (model);
}
我不确定你在哪里进行更新(无论是在控制器中手动还是在模型本身中),但你只需要从ModelState中删除任何或所有项目,它们将被重新填充。