我试图通过创建一个小型Web应用程序来了解Razor页面的工作原理以及.Net Core,并且我仍然坚持如何处理表单中的按钮操作。我已经习惯了MVC类型的流程(从5年前我第一次尝试网络应用程序开始),按钮会有一个onClick动作,可以从后面的代码中访问,但似乎并非如此与Razor页面相同(除非我没有看到它)。我有一个像这样的基本形式
<form method="post">
<fieldset>
<input type="text" value="" placeholder="user name"/>
<input type="password" value="" placeholder="password"/>
<input type="button" value="Submit" id="submitButton"/>
</fieldset>
所以我想要实现的是当按下按钮时,调用.cs文件中的一个动作将执行几个不同的操作(比如调用API,获取结果然后根据结果路径)到另一页)但即使我添加一个&#34; onClick&#34;按钮,我无法弄清楚如何将其连接到后面的代码。我已经看到了各种各样的答案,大多数都是使用模型和数据库,但由于这与我所做的不一样,这些例子并没有帮助。
答案 0 :(得分:0)
我会尝试为你做一个简单的例子。创建一个剃刀页面并使用名称“测试”。 Test.cshtml文件应包含以下内容:
@page
@model WebApplication1.Pages.TestModel
<form method="post">
<fieldset>
<input asp-for="username" placeholder="user name" />
<span asp-validation-for="username" class="text-danger"></span>
<br />
<input asp-for="password" type="password" placeholder="password" />
<span asp-validation-for="password" class="text-danger"></span>
<br />
<input type="submit" value="Submit" id="submitButton" />
</fieldset>
</form>
Test.cshtml.cs应具有以下内容
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace WebApplication1.Pages
{
public class TestModel : PageModel
{
[BindProperty]
public string username { get; set; }
[BindProperty]
public string password { get; set; }
public void OnGet()
{
// you can initialize the values. for example I set the username
username = "test";
}
public IActionResult OnPost()
{
// do something with username and password
if (string.IsNullOrEmpty(password))
{
ModelState.AddModelError("password", "Password is a required field.");
return Page();
}
// or you can redirect to another page
return RedirectToPage("./Index");
}
}
}
告诉我您是否需要此示例的额外说明。我希望它有所帮助。