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);
}
注:あなた 'catch'ブロックだけでなく、不要です、彼らは有害です。それらは完全に削除する必要があります。 – David
あなたは声明を出しましたが、どうして理由が分かりませんか?@David –
実際に何もしないので余計です。彼らはスタックトレース情報を捨てて新しいスタックトレースに置き換えるので、実際の例外の発生場所を事実上隠してしまうので、有害です。 – David