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 アクション動詞にコメントを付けてアプリケーションを実行すると、アプリケーションはリソースが見つからないというエラーをスローします。Create Action は起動しません。私のhtmlには @using (Html.BeginForm()) があります

フォームを変更しても、同じエラーが発生します。GET アクション動詞のコメントを外すと、常に GET メソッドが起動します。POST Create action を呼び出したい。解決方法を教えてください。

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 に答える