1

当我在我的控制器中添加 2 Create Method 时,如下所示

        [AcceptVerbs(HttpVerbs.Get)]
    public ActionResult Create()
    {
        Product.Models.Product p = new Models.Product();
       //update DB
        try
        {
            return RedirectToAction("GetAll");
        }
        catch (Exception)
        {

            return View(p);
        }

    } 

    //
    // POST: /Product/Default1/Create

     [AcceptVerbs(HttpVerbs.Posr)]
    public ActionResult Create(FormCollection collection)
    {
        try
        {
            if (myProduct.Products == null)
            {
                myProduct.Products = new List<Models.Product>();
            }
            Product.Models.Product p = new Product.Models.Product();
            p.Name =  collection["Name"];
            p.ProductType = collection["ProductType"];
            p.Id = myProduct.Products.Count + 1;

            myProduct.Products.Add(p);


            return RedirectToAction("Index");
        }
        catch
        {
            return View();
        }
    }

如果我评论 GET 动作动词并运行应用程序,应用程序会抛出错误资源未找到。它不会触发创建操作。我的 html 有 @using (Html.BeginForm())

我将表格更改为即使这样我也得到了同样的错误。如果我取消注释 GET 动作动词,那么总是 GET 方法启动。我想调用 POST Create action 。可以any1指导我如何解决。

我的 MVC 项目中有产品有区域。其中有 ProductsController.cs 请帮助我如何调用 POST 操作 Create 方法。

-马亨德

4

2 回答 2

1

尝试以下操作:

@using (Html.BeginForm("Create", "Default1", new { area = "Product" }, FormMethod.Post)) {
// Your Form
}

请使用

[HttpGet]
[HttpPost]

而不是 AcceptVerbs,它更干净。

于 2012-07-11T12:59:39.543 回答
0
[HttpGet] // Or even if you dont put this, it will be treated as GET
public ActionResult Create()
{
     // your code goes here
}

[HttpPost]
public  ActionResult Create(Model yourModel)
{
    // your code goes here 
}

in your view 
@using(Html.BeginForm("HandleForm", "Home")
于 2012-07-11T13:08:58.283 回答