Asp.net mvc 3 ASP.NET MVC无状态特性

Asp.net mvc 3 ASP.NET MVC无状态特性,asp.net-mvc-3,stateless,Asp.net Mvc 3,Stateless,这是一个概念性问题 据我所知,MVC具有无状态性。 当我在浏览器中单击“重新加载”(F5)时,我在视图中写入或更改的值不会消失,也不会被模型中的原始值替换 有人知道为什么会这样吗? 我假设在我重新加载页面的那一刻,修改后的“notsubmitted”值应该消失 我的观点只是一些代码。。。我没有使用web表单(我的意思是,我的应用程序中没有.aspx页面) @model PruebaMVC.Models.DatosLINQ.OPERACION @{ ViewBag.Title=“编辑”; } 编

这是一个概念性问题

据我所知,MVC具有无状态性。 当我在浏览器中单击“重新加载”(F5)时,我在视图中写入或更改的值不会消失,也不会被模型中的原始值替换

有人知道为什么会这样吗? 我假设在我重新加载页面的那一刻,修改后的“notsubmitted”值应该消失

我的观点只是一些代码。。。我没有使用web表单(我的意思是,我的应用程序中没有.aspx页面)


@model PruebaMVC.Models.DatosLINQ.OPERACION
@{
ViewBag.Title=“编辑”;
}
编辑Operación
@使用(Html.BeginForm()){
@Html.ValidationSummary(true)
歌剧院
@Html.HiddenFor(model=>model.IDOperacion)
@Html.LabelFor(model=>model.FechaOperacion,“Fecha de la Operación”)
@EditorFor(model=>model.FechaOperacion)
@Html.ValidationMessageFor(model=>model.FechaOperacion)
@LabelFor(model=>model.com,“Comision”)
@EditorFor(model=>model.com)
@Html.ValidationMessageFor(model=>model.com)
@LabelFor(model=>model.Legajo,“Número de Legajo”)
@EditorFor(model=>model.Legajo)
@Html.ValidationMessageFor(model=>model.Legajo)

} @ActionLink(“Volver al-listado de Operaciones”,“Index”)


我希望不要通过提出一个概念性的问题来强加网站的任何规则。如果我是,请告诉我,这样我就不会再这样做了。

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中删除任何或所有项,它们就会被重新填充


.

您能提供一个简单的代码示例吗?您能看到网络流量吗。可能是浏览器的例子caching@neontapir:代码是有的。但问题是我没有提交页面,我从来没有达到“发布”操作结果。不管怎样,现在我明白你的意思了,这个链接真的很有用。如果ASP.NET MVC实现了这些HTML帮助程序,那么他们经常谈论的无状态特性在哪里?您正在加载页面、提交并点击F5吗?但是,如果我从模型状态中删除该值(我认为,这应该在“GET”ActionResult中完成,模型将被传递到View()原始值将如何显示在视图中?首先,如果您提交表单,然后按F5键,这取决于您的浏览器,它将刷新您的当前屏幕——这意味着您将在返回页面后看到所有内容。这不是在执行HTTPGET。其次,当您从ModelState中删除一个或多个属性时,它并不是从您的模型中删除它。它正在将其从发布的值中删除。您是正确的,如果您不提交表单,则这些值应恢复到原始状态。
public ActionResult MyController (MyModel model)
{
    if (ModelState.IsValid)
    {
        ModelState.Remove ("PropertyNameToRemove");
    }

    return View (model);
}