C# 无法获取[HttpPost]响应
刚刚开始学习ASP MVC,我正在尝试制作一个表单,在这里你可以给出你的名字和电子邮件,还有。。。。当你点击提交表单时,它会引导你进入感谢页面,在那里你会看到一条感谢信息和你的名字。 但在点击提交按钮后,我什么也没发生。我想知道是什么问题。 这是所有动作方法的HomecontrollerC# 无法获取[HttpPost]响应,c#,asp.net-mvc,C#,Asp.net Mvc,刚刚开始学习ASP MVC,我正在尝试制作一个表单,在这里你可以给出你的名字和电子邮件,还有。。。。当你点击提交表单时,它会引导你进入感谢页面,在那里你会看到一条感谢信息和你的名字。 但在点击提交按钮后,我什么也没发生。我想知道是什么问题。 这是所有动作方法的Homecontroller using System; using Microsoft.AspNetCore.Mvc; using PartyInvites.Models; namespace PartyInvites.Contro
using System;
using Microsoft.AspNetCore.Mvc;
using PartyInvites.Models;
namespace PartyInvites.Controllers
{
public class HomeController : Controller
{
public ViewResult Index()
{
int hours = DateTime.Now.Hour;
ViewBag.Greeting = hours < 12 ? "Good Morning" : "Good Evening";
return View("MyView") ;
}
[HttpGet]
public ViewResult RsvpForm()
{
return View();
}
[HttpPost]
public ViewResult RsvpForm(GuestResponse guestResponse)
{
Repository.AddResponse(guestResponse);
return View("Thanks",guestResponse);
}
}
}
这是MyView页面,它是默认页面
@{
Layout = null;
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width"/>
<title>Index</title>
</head>
<body>
<div>
@ViewBag.Greeting World (from the view)
<p>
We are going to have an exciting party.<br />
(to do:sell it better.Add pictures or something.)
</p>
<a asp-action="RsvpForm"> Ravp Now</a>
</div>
</body>
</html>
}
这是表单页面,您可以点击Ravp后进入该页面
现在的问题是,当我点击Submit Rsvp时,什么也没有发生。它不会进入感谢页面。我检查了所有代码几次,但什么也没找到。
有什么不对劲吗?
这些是感谢视图页面和存储库类模型
@model GuestResponse
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head >
<meta name="viewport" content="width=device-width"/>
<title>Thanks</title>
</head>
<body>
<p>
<h1> Thank you! @Model.Name!</h1>
@if (Model.WillAttend == true)
{
@:Its great that you're coming.The drinks are already in the Fridge!
}
else
{
@:sorry to here that you can't make it , but thanks for letting us know.
}
</p>
<p> click<a asp-action="ListResponses"> here </a> to see who is coming.</p>
</body>
</html>
我认为您的问题在cshtml文件中 表格的所有内容必须在该表格声明中。我现在没有可用的C项目来检查它,但我认为固定的代码应该是这样的:
*@
@model PartyInvites.Models.GuestResponse
@{ Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewpot" content="width=device-width"/>
<title>RsvpForm</title>
</head>
<body>
<form asp-action="RsvpForm" method="post">
<p>
<label asp-for="Name"> Your Name: </label>
<input asp-for="Name"/>
</p>
<p>
<label asp-for="Email"> Your Email:</label>
<input asp-for="Email"/>
</p>
<p>
<label asp-for="Phone"> Your Phone:</label>
<input asp-for="Phone"/>
</p>
<p>
<label> Will You Attend?</label>
<select asp-for="WillAttend">
<option value=""> Choose an option </option>
<option value="true"> Yes, I'll be There. </option>
<option value="false"> No, i can't come. </option>
</select>
</p>
<button type="submit"> Submit Rsvp</button>
</form>
</body>
</html>
你能告诉我你到底改变了什么吗?谢谢,我道歉!我忘记给代码添加注释了。在该文件中,您有这样一个:``这将创建一个空表单,并在同一行中关闭,您所做的是在表单关闭后添加表单元素和submit按钮。您必须在表单元素中包含所有字段和按钮,如下所示:我刚刚从表单声明的第12行删除了结束标记,并将结束标记移动到submit按钮之后。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace PartyInvites.Models
{
public static class Repository
{
private static List<GuestResponse> responses=new List<GuestResponse>();
public static IEnumerable<GuestResponse> Responses
{
get { return responses; }
}
public static void AddResponse(GuestResponse response)
{
responses.Add(response);
}
}
}
*@
@model PartyInvites.Models.GuestResponse
@{ Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewpot" content="width=device-width"/>
<title>RsvpForm</title>
</head>
<body>
<form asp-action="RsvpForm" method="post">
<p>
<label asp-for="Name"> Your Name: </label>
<input asp-for="Name"/>
</p>
<p>
<label asp-for="Email"> Your Email:</label>
<input asp-for="Email"/>
</p>
<p>
<label asp-for="Phone"> Your Phone:</label>
<input asp-for="Phone"/>
</p>
<p>
<label> Will You Attend?</label>
<select asp-for="WillAttend">
<option value=""> Choose an option </option>
<option value="true"> Yes, I'll be There. </option>
<option value="false"> No, i can't come. </option>
</select>
</p>
<button type="submit"> Submit Rsvp</button>
</form>
</body>
</html>