Отправка формы ASP.NET Core MVC возвращает метод HTTP 405, который не разрешен при использовании маршрутизации атрибутовC#

Место общения программистов C#
Ответить
Anonymous
 Отправка формы ASP.NET Core MVC возвращает метод HTTP 405, который не разрешен при использовании маршрутизации атрибутов

Сообщение Anonymous »

Я создаю приложение ASP.NET Core MVC, используя представления Razor и модальные окна Bootstrap для форм Вход и Регистрация.

При отправке форм я постоянно получаю

HTTP 405 – метод не разрешен.

Это потому, что на странице razor есть встроены две формы? Я пробовал изменить атрибуты маршрута, но это все еще не работало. Могут ли две формы внутри одной страницы быть проблемой и их отображение на разных страницах Razor решит проблему?
Контроллер
using Chance_Profit.Models;
using Microsoft.AspNetCore.Mvc;

namespace Chance_Profit.Controllers
{

public class HomeController : Controller // no ApiController
{
[HttpGet]
public IActionResult Index()
{
ViewData["Title"] = "Chance Profit - Home";
return View();
}

[HttpPost("login")]
[ValidateAntiForgeryToken]
public IActionResult Login(IndexViewModel model)
{
Console.WriteLine("Login action invoked");
if (!ModelState.IsValid)
{
ViewData["Title"] = "Chance Profit - Home";
return View("Index", model);
}

// TODO: Perform login logic
return RedirectToAction(nameof(Dashboard));
}

[HttpPost("register")]
[ValidateAntiForgeryToken]
public IActionResult Register(IndexViewModel model)
{
if (!ModelState.IsValid)
{
ViewData["Title"] = "Chance Profit - Home";
return View("Index", model);
}

// TODO: Perform registration logic
return RedirectToAction(nameof(Dashboard));
}

[HttpGet]
public IActionResult Dashboard()
{
ViewData["Title"] = "Chance Profit - Dashboard";
return View();
}
}
}

Страница Razor
@model Chance_Profit.Models.IndexViewModel

@{
ViewData["Title"] = ViewData["Title"] ?? "Chance Profit";
}


Chance Profit






@ViewData["Title"]


Login


Register







Login












Close
Login

@Html.AntiForgeryToken()











Register
















Close
Register

@Html.AntiForgeryToken()








@section Scripts {

}

Обработка входа
window.onload = function () {
let lform = document.getElementById("login");
lform.addEventListener("submit", function (event) {
event.preventDefault();
});
let rform = document.getElementById("register");
rform.addEventListener("submit", function (event) {
event.preventDefault();
});
}
function handleLogin() {
console.log("Login form submitted");
let lform = document.getElementById("login");
lform.submit();
}

Program.cs
var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllersWithViews();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}

app.UseHttpsRedirection();
app.UseRouting();

app.UseAuthorization();

app.MapStaticAssets();

app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}")
.WithStaticAssets();

app.Run();



Подробнее здесь: https://stackoverflow.com/questions/798 ... when-using
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»