2016-04-08 9 views
1

コントローラに2つのインデックスメソッドがあります。そのうちの1つはGETで、もう1つはページのフォームで使用されるPOSTです。ASp.MVC HTTP POSTがアクションにリダイレクトされない

フォームを送信すると、ページが更新されるときに、GETインデックスメソッドを実行する代わりに空白のページが表示され、理想的にはそのページがリロードされます。

POST METHOD

[HttpPost] 
    public void Index(ProductViewModel product) 
    { 
     try 
     { 
      var productContract = Mapper.Map<ProductViewModel, ProductContract>(product); 
      _productService.CreateProduct(productContract); 
     } 
     catch (Exception ex) 
     { 

      throw ex; 
     } 
     RedirectToAction("Index"); 
    } 

あなたが結果を返す必要がGETメソッド

[HttpGet] 
    public ViewResult Index() 
    { 
     _productService = new ProductServiceClient(); 
     var brandSerice = new ProductBrandServiceClient(); 
     var categoryService = new ProductCategoryServiceClient(); 

     var productPageViewModel = new ProductPageViewModel(); 
     var productViewModelList = new List<ProductViewModel>(); 
     var productBrandsViewModelList = new List<ProductBrandViewModel>(); 
     var productCategoriesViewModelList = new List<ProductCategoryViewModel>(); 

     try 
     { 
      productViewModelList.AddRange(_productService.GetProducts().Select(Mapper.Map<ProductContract, ProductViewModel>)); 
      productBrandsViewModelList.AddRange(brandSerice.GetProductBrands().Select(Mapper.Map<ProductBrandContract, ProductBrandViewModel>)); 
      productCategoriesViewModelList.AddRange(categoryService.GetProductCategories().Select(Mapper.Map<ProductCategoryContract, ProductCategoryViewModel>)); 

      productPageViewModel.ProductList = productViewModelList; 

      productPageViewModel.ProductBrands = new SelectList(productBrandsViewModelList, "Id", "Description"); 
      productPageViewModel.ProductCategories = new SelectList(productCategoriesViewModelList, "Id", "Description"); 

     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 

     return View(productPageViewModel); 
    } 
+2

注:あなた 'catch'ブロックだけでなく、不要です、彼らは有害です。それらは完全に削除する必要があります。 – David

+0

あなたは声明を出しましたが、どうして理由が分かりませんか?@David –

+0

実際に何もしないので余計です。彼らはスタックトレース情報を捨てて新しいスタックトレースに置き換えるので、実際の例外の発生場所を事実上隠してしまうので、有害です。 – David

答えて

2

[HttpPost] 
public ActionResult Index(ProductViewModel product) 
{ 
    // ... 

    return RedirectToAction("Index"); 
} 
関連する問題