Tôi có trang web asp.net mvc 1.0 phục vụ một số nội dung từ hệ thống phân cấp 2 cấp /category/articleLàm thế nào để xử lý 'Xem không tìm thấy' InvalidOperationException trong asp.net MVC?
Khi mọi thứ hoạt động đúng với bản đồ sẽ được hiển thị. Tuy nhiên, khi url đáp ứng điều kiện định tuyến nhưng khung nhìn không tồn tại một ngoại lệ được nêu lên mà tôi không thể bẫy trong hành động Bộ điều khiển.
Routing:
routes.MapRoute(
"Article",
"{category}/{article}.aspx",
new { controller = "MyController", action = "Article" }
);
MyController Hành động:
public ActionResult Article(string category, string article)
{
string path = string.Format("~/Views/{0}/{1}.aspx", category, article);
ViewResult vr = View(path);
return vr;
}
Tuy nhiên, khi xem không được tìm thấy, một System.InvalidOperationException
được tạo ra mà tôi không thể bắt trong Action Controller.
Ngoại lệ chi tiết: System.InvalidOperationException: Quan điểm '~/Views/my-loại/my-article-với-dài-name.aspx' không thể tìm được hoặc thạc sĩ của nó . Các vị trí sau được tìm kiếm: ~/Views/my-loại/my-article-với-dài-name.aspx
tôi có thể bẫy lỗi trong phương pháp Application_Error()
trong global.asax.cs
nhưng:
- không biết cách chuyển hướng đến chế độ xem lỗi từ đó
- tự hỏi nếu có một nơi tốt hơn gần hơn với nơi ngoại lệ là được nêu ra.
Tôi đã thử và thích giải pháp. Vấn đề duy nhất là nếu bạn nhận được một InvalidOperationException do một lý do khác nhau nó sẽ dẫn đến một 404. Tôi đã có một ngoại lệ như vậy xảy ra khi cố gắng serialize một cái gì đó. – Bealer