Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Razor页面发布带有模型绑定的多个表单_C#_Ajax_Asp.net Mvc_Razor_Razor Pages - Fatal编程技术网

C# Razor页面发布带有模型绑定的多个表单

C# Razor页面发布带有模型绑定的多个表单,c#,ajax,asp.net-mvc,razor,razor-pages,C#,Ajax,Asp.net Mvc,Razor,Razor Pages,我在一个页面上有多个表单,我想在单击一个按钮后发布这些表单。我尝试使用一个javascript函数将两个表单都.submit()(放在按钮的onclick=中),但实际上只有一个表单的值被传递到OnPost()方法服务器端。以下是.cshtml和.cs文件中的相关代码: StudentMain.cshtml <!--first form--> <form class="login100-form" method="post"> <span class="lo

我在一个页面上有多个表单,我想在单击一个按钮后发布这些表单。我尝试使用一个javascript函数将两个表单都.submit()(放在按钮的onclick=中),但实际上只有一个表单的值被传递到OnPost()方法服务器端。以下是.cshtml和.cs文件中的相关代码:

StudentMain.cshtml

<!--first form-->
<form class="login100-form" method="post">
    <span class="login100-form-title" style="padding-bottom: 38px">
          Student Information
    </span>
    <div class="wrap-input100">
        <input class="input100 has-val" type="text" name="name" value='@ViewData["name"]' readonly/>
        <span class="focus-input100" data-placeholder="Student Name"></span>
    </div>

    ...more divs/inputs as above

</form>

<!--second form-->
<form class="login100-form" method="post">
    <div class="wrap-input100">
        <select class="input100 select" name="eduplan" selectedval='@ViewData["eduplan"]'>
            <option disabled selected value style="display:none"/>
            <option>High School Diploma</option>
            <option>Technical Training</option>
            <option>Associate Degree</option>
            <option>Bachelor's Degree</option>
            <option>Advanced Degree</option>
            <option>Military</option>
            <option>Other</option>
        </select>
        <span class="focus-input100" data-placeholder="Education Plan"></span>
    </div>

    ...more divs/selects as above

    <div class="container-login100-form-btn">
        <div class="wrap-login100-form-btn">
        <div class="login100-form-bgbtn"></div>
            <button class="login100-form-btn" type="submit">
                Save
            </button>
        </div>
    </div>
</form>

那么,做这件事最好的方法是什么?如何确保两个表单中的值同时传递给OnPost()方法?我需要在某种程度上使用AJAX吗?非常感谢您的帮助。

您可以为不同的表单帖子使用不同的方法,方法的名称指定为每个表单上的
asp页面处理程序的值。更多信息可以在这里找到

更新

例如,在模型类中有两个
POST
方法,即:
OnPostAdd
onpoststract
,要发布到不同方法的不同表单如下所示:

<form method="post" asp-page-handler="Add">
    <button type="submit">Add</button>
</form>

<form method="post" asp-page-handler="Subtract">
    <button type="submit">Subtract</button>
</form>

添加
减去

PS:不管你的方法名是
OnPostAdd
还是
OnPostAddAsync
,ASP.NET核心仍然希望你的处理程序名是
Add
,因为它会自动解析前缀,如
OnPost
OnGet
等,还有像
Async

这样的后缀,通过将方法的名称指定为每个表单上的
asp页面处理程序的值,可以对不同的表单帖子使用不同的方法。更多信息可以在这里找到

更新

例如,在模型类中有两个
POST
方法,即:
OnPostAdd
onpoststract
,要发布到不同方法的不同表单如下所示:

<form method="post" asp-page-handler="Add">
    <button type="submit">Add</button>
</form>

<form method="post" asp-page-handler="Subtract">
    <button type="submit">Subtract</button>
</form>

添加
减去

PS:不管你的方法名是
OnPostAdd
还是
OnPostAddAsync
,ASP.NET核心仍然希望你的处理程序名是
Add
,因为它会自动解析前缀,如
OnPost
OnGet
等,像
Async

这样的后缀,你能在你的答案中总结一下视频中的不同方法吗?@eRank视频只显示了一种方法,请查看我的答案的更新以了解更多细节。你能在你的答案中总结视频中的不同方法吗?@eRank视频只显示了一种方法,查看我答案的更新,以了解更多信息