dan*_*ott 7 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="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>
Run Code Online (Sandbox Code Playgroud)
StudentMain.cshtml.cs
public class StudentMain : PageModel
{
public void OnPost(string eduplan, string college, string major, string careerpath, string ethnicity, string gender, string ncaa, string firstgen, string onlineinterest)
{
Database.SaveStudentData(eduplan, college, major, careerpath, ethnicity, gender, ncaa, firstgen, onlineinterest);
}
}
Run Code Online (Sandbox Code Playgroud)
那么,执行此操作的最佳方法是什么?如何确保两种形式的值同时传递到 OnPost() 方法?我需要以某种方式使用 AJAX 吗?任何帮助表示赞赏。
Sma*_*rtE 12
您可以通过将方法的名称指定为每个表单上标记助手的值,对不同的表单 POST 使用不同的方法asp-page-handler。更多信息可以在这个YouTube 视频中找到
更新
例如,您POST的 Model 类中有两个方法,即:OnPostAdd和OnPostSubtract,发布到不同方法的不同表单将如下所示:
<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>
Run Code Online (Sandbox Code Playgroud)
PS:无论你的方法被命名为OnPostAdd或OnPostAddAsync,ASP.NET Core 仍然期望你的处理程序名称为 ,Add因为它会自动解析诸如OnPost等前缀OnGet和诸如 等后缀Async
| 归档时间: |
|
| 查看次数: |
8874 次 |
| 最近记录: |