ASP.NET MVC Stateless Nature - PullRequest
       18

ASP.NET MVC Stateless Nature

0 голосов
/ 09 декабря 2011

это концептуальный вопрос.

Насколько я знаю, MVC имеет характер без гражданства. Когда я нажимаю reload (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>

Я надеюсь, что не буду нарушать правила сайта, задавая концептуальный вопрос. Если я, пожалуйста, скажи мне, чтобы я больше так не делал.

1 Ответ

1 голос
/ 09 декабря 2011

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, и они будут заселены.

См. также этот вопрос .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...