首页 > 解决方案 > Razor 页面独立地向每个控制器发布表单

问题描述

在我的 asp.net razor 项目中,我的页面包含多个表单。但如果我发布到表更新,主要信息表单数据更改将会丢失。如何在不更改其他表单数据的情况下提交表格?

(我想我可以尝试使用 js+ajax 不使用 razor 绑定来制作页面,但我会先尝试 razor 解决方案)

<table>
    @for (int i = 0; i < @Model.data.Test.Count(); i++)
    {
        <tr>
            <td>
                <div>@Html.DisplayFor(model => model.data.Test[i])</div>
            </td>
            <td>
                <form method="post" class="container" asp-page-handler="delete">
                    <input type="hidden" name="id" value="@i" />
                    <input type="submit" value="Delete" class="btn btn-primary" />
                </form>
            </td>
        </tr>
    }
</table>

//the main user info form
<form method="post">

<div class="form-group">
    <label asp-for="data.UserName" class="control-label"></label>
    <input asp-for="data.UserName" class="form-control" readonly />
    <span asp-validation-for="data.UserName" class="text-danger"></span>
</div>

 ... other inputs.

<div class="form-group">
    <input type="submit" value="Save" class="btn btn-primary" />
</div>

标签: asp.netajaxasp.net-corerazor

解决方案


您可以尝试使用 ajax 并使用event.preventDefault();它可以防止重新加载页面。这是一个演示:

<form method="post" id="myForm">

   <div class="form-group">
    <label asp-for="data.UserName" class="control-label"></label>
    <input asp-for="data.UserName" class="form-control" readonly />
    <span asp-validation-for="data.UserName" class="text-danger"></span>
</div>

 ... other inputs.

<div class="form-group">
    <input type="submit" value="Save" class="btn btn-primary" onclick="Save()" />
</div>
</form>

js:

function Save()
        {
            event.preventDefault();
             $.ajax({
                 type: "POST",
                 data: $("#myForm").serialize(),
                url: '/.../...',
            }).done(function (result) {
                
            });

        }

推荐阅读