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# 已创建视图上的MVC 4错误404_C#_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# 已创建视图上的MVC 4错误404

C# 已创建视图上的MVC 4错误404,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我有一个控制器: [Authorize] public class CheckoutController : Controller { ShoppingCartContext storeDB = new ShoppingCartContext(); const string PromoCode = "FREE"; [HttpPost] public ActionResult AddressAndPayment(FormCollection values)

我有一个控制器:

[Authorize]
public class CheckoutController : Controller
{

    ShoppingCartContext storeDB = new ShoppingCartContext();
    const string PromoCode = "FREE";

    [HttpPost]
    public ActionResult AddressAndPayment(FormCollection values)
    {
        var order = new Order();
        TryUpdateModel(order);

        try
        {
            if (string.Equals(values["PromoCode"], PromoCode,
                StringComparison.OrdinalIgnoreCase) == false)
            {
                return View(order);
            }
            else
            {
                order.Username = User.Identity.Name;
                order.OrderDate = DateTime.Now;

                //Save Order
                storeDB.Orders.Add(order);
                storeDB.SaveChanges();
                //Process the order
                var cart = Models.ShoppingCart.GetCart(this.HttpContext);
                cart.CreateOrder(order);

                return RedirectToAction("Complete",
                    new { id = order.OrderId });
            }
        }
        catch
        {
            //Invalid - redisplay with errors
            return View(order);
        }
    }

    public ActionResult Complete(int id)
    {
        // Validate customer owns this order
        bool isValid = storeDB.Orders.Any(
            o => o.OrderId == id &&
            o.Username == User.Identity.Name);

        if (isValid)
        {
            return View(id);
        }
        else
        {
            return View("Error");
        }
    }

}
我在Checkout下创建了一个名为AddressAndPayment的视图,因此它会转到localhost/Checkout/AddressAndPayment,但我只得到一个404错误,即使我右键单击视图并在页面检查器中单击视图。我不知道为什么创建视图时它甚至不显示视图。

您需要相应的HttpGet方法,因为您当前的方法只接受HttpPost请求。添加以下内容:

[HttpGet]
public ActionResult AddressAndPayment()
{
    return View();
}
您需要一个对应的HttpGet方法,因为您当前的方法只接受HttpPost请求。添加以下内容:

[HttpGet]
public ActionResult AddressAndPayment()
{
    return View();
}

您如何请求本地主机/签出/地址和付款?如果不是POST请求,则没有匹配的路由。您如何请求localhost/Checkout/AddressAndPayment?如果不是POST请求,则没有匹配的路由。默认情况下,每个操作都侦听GET请求,因此HttpGet属性是冗余的。尽管如此,您的答案是正确的,+1。@HenkMollema虽然正确,但您应该养成同时修饰HttpGet和HttpPost方法的习惯,否则在某些情况下,您可能会在HttpPost请求上执行HttpGet操作,它将匹配它看到的第一个请求。花了数小时调试这样愚蠢的问题。默认情况下,每个操作都侦听GET请求,因此HttpGet属性是多余的。尽管如此,您的答案是正确的,+1。@HenkMollema虽然正确,但您应该养成同时修饰HttpGet和HttpPost方法的习惯,否则在某些情况下,您可能会在HttpPost请求上执行HttpGet操作,它将匹配它看到的第一个请求。花了好几个小时调试这样愚蠢的问题。