2012-07-03 3 views
1

Когда я добавить 2 Создать метод в мой контроллер, как нижеДобавление Создать метод в ASP.NET MVC

 [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. Может any1 directme ​​как решить.

У меня есть объекты в моем проекте MVC. Внутри этого есть ProductsController.cs Пожалуйста, помогите мне, как вызвать метод POST Создать метод.

-Mahender

+0

Как вы размещаете? – c0deNinja

+1

У вас есть тип атрибута AcceptVerbs для сообщения. «.Posr» -> «.Post» –

+0

Это дубликат http://stackoverflow.com/questions/283209/asp-net-mvc-acceptverbs-and-registering-routes – HatSoft

ответ

1

Попробуйте следующее:

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

И, пожалуйста, используйте

[HttpGet] 
[HttpPost] 

вместо AcceptVerbs, его гораздо чище.

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") 
Смежные вопросы