首页 > 解决方案 > ASP.NET Core Razor 页面在回发时保留显示数据

问题描述

我已经阅读了许多与此相关的问题/答案,但我仍然觉得我错过了一些东西。为了更容易阅读,我将所有内容都简化了一些,但本质上我的问题是 -

我有一个剃须刀页面,用户可以在其中编辑公司模型。用户只能编辑,比如说 1 个字段,即company name. 但是,我需要为该公司显示大约 20 个不同的信息字段。

在回发时,我检查我的模型是否有效,如果不是,我返回Page(). 问题是我所有的显示数据都丢失了。这意味着我已经将 20 个不同的隐藏输入与每个属性一起放置,因为在模型错误的情况下我需要它。

public async Task<IActionResult> OnPostAsync()
{
     if (ModelState.IsValid)
     {
        //*** success - return user to a different page
     }
     return Page();
}

<p>@Model.Company.Location.Name</p>
<form class="row" method="post">
    @Html.HiddenFor(m => m.Company.CompanyId)
    @Html.HiddenFor(m => m.Company.Location.Name)
    @Html.HiddenFor(m => m.Company.Location.City)
    @Html.HiddenFor(m => m.Company.Location.State)
    //*** more listed here


    @Html.DropDownListFor(m => m.Company.Name)
    <input type="submit" value="Save" />
</form>

我的 html 看起来有点像,所以你明白了。我真的必须将所有标签值放在隐藏的输入中以确保在模型状态错误的情况下保留它们吗?

只是寻找最佳实践,因为这似乎非常......不正确。

标签: asp.net-corerazorrazor-pages

解决方案


推荐阅读