我是ASP.Net的新手,并且正在使用Blazor服务器端构建一个网站,并且试图将客户端的表单发布到这样的控制器上:
客户端代码(位于 / pages 中):
private async void LogIn()
{
isSubmitting = true;
var json = JsonConvert.SerializeObject(logInForm);
var data = new StringContent(json, Encoding.UTF8, "application/json");
//The base adress correspond to "https://localhost:port/"
string adress = WebClient.httpClient.BaseAddress + "log_in";
var result = await WebClient.httpClient.PostAsync(adress, data);
isSubmitting = false;
}
服务器代码(位于 / controllers 中):
public class UserController : Controller
{
private readonly AppDbContext _db;
public UserManager<AppUser> _manager;
public UserController(AppDbContext db, UserManager<AppUser> manager)
{
_db = db;
_manager = manager;
}
[Route("log_in")]
[HttpPost]
private async Task<IActionResult> LogIn([FromBody]LogInForm userForm)
{
var user = new AppUser { UserName = userForm.mail, Email = userForm.mail };
var result = await _manager.CheckPasswordAsync(user, userForm.password);
return null;
}
}
执行此代码时,PostAsync()
永远不会重定向到LogIn()
方法并返回HTTP 400错误。
我首先学习了如何使用PostJsonAsync()
进行操作,但是它是使用Blazor WebAssembly进行预览的,所以我不能在生产中使用它。我尝试首先在Internet上找到答案,但没有关于如何在Blazor服务器端执行此操作的明确信息。
有什么机会我可以快速,简单地说明我在做什么错?
答案 0 :(得分:0)
asp.net中的默认路由为
if(startupCounter == null || startupCounter.isEmpty())
{
startupCounter =[taskid: taskid, propkey:'startupcounter', propvalue:"420"];
createResource('TaskProperty', startupCounter, false);
}
这意味着您正在寻找的网址可能是
weburl.com/{controller}/{action}
请参阅:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/routing?view=aspnetcore-3.0