Представление кэширует свои предыдущие данные, когда представление повторно вызывается с параметром View () - когда я не хочу его - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть простая модель POCO Person.

public class Person
{
    public int PersonId { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

Соответствующие методы действия:

public IActionResult Register()
{
    return View();
}

[HttpPost]
public IActionResult Register(Person p)
{
    return View();
}

Переход к \Home\Register вызывает HTML-форму, которую я заполняюи отправить.Отправив форму, я представлен на той же странице, а не на пустой. Я хотел бы, чтобы форма была пустой .

Вопрос

Почему второй метод действия, который возвращает View() (без передачи какого-либо экземпляра Person), создает полностьюзаполненная страница?Как мне остановить это поведение?

Редактировать

@model Person

@using (Html.BeginForm(nameof(HomeController.Register), nameof(HomeController).Replace(nameof(Controller), string.Empty), FormMethod.Post))
{
<table>
    <tr>
        <td>@Html.LabelFor(m => m.Name)</td>
        <td>@Html.TextBoxFor(m => m.Name)</td>
    </tr>
    <tr>
        <td>@Html.LabelFor(m => m.Age)</td>
        <td>@Html.TextBoxFor(m => m.Age)</td>
    </tr>
    <tr>
        <td colspan="2"><input type="submit" value="Submit" /></td>
    </tr>
</table>
}

1 Ответ

0 голосов
/ 04 февраля 2019

Если вы используете ASP.NET Core MVC, ModelState автоматически заполняется asp.net во время отправки и применяется к представлению.Чтобы вернуть пустую форму, вы можете просто очистить ее:

[HttpPost]
public IActionResult Register(Person p)
{
    ModelState.Clear();
    return View();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...