ASp.MVC HTTP Post not notirecting to action

问题描述:

我在我的控制器中有2个索引方法,其中一个是GET,另一个是在页面上的窗体上使用的POST。ASp.MVC HTTP Post not notirecting to action

当我提交表单时,当页面刷新时,它显示一个空白页面,而不是通过我的GET索引方法运行并理想地重新加载该页面。

POST方法

[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

你需要返回一个结果:

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

    return RedirectToAction("Index"); 
}