Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法获取[HttpPost]响应_C#_Asp.net Mvc - Fatal编程技术网

C# 无法获取[HttpPost]响应

C# 无法获取[HttpPost]响应,c#,asp.net-mvc,C#,Asp.net Mvc,刚刚开始学习ASP MVC,我正在尝试制作一个表单,在这里你可以给出你的名字和电子邮件,还有。。。。当你点击提交表单时,它会引导你进入感谢页面,在那里你会看到一条感谢信息和你的名字。 但在点击提交按钮后,我什么也没发生。我想知道是什么问题。 这是所有动作方法的Homecontroller using System; using Microsoft.AspNetCore.Mvc; using PartyInvites.Models; namespace PartyInvites.Contro

刚刚开始学习ASP MVC,我正在尝试制作一个表单,在这里你可以给出你的名字和电子邮件,还有。。。。当你点击提交表单时,它会引导你进入感谢页面,在那里你会看到一条感谢信息和你的名字。 但在点击提交按钮后,我什么也没发生。我想知道是什么问题。 这是所有动作方法的Homecontroller

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>