2015-05-04 29 views
6

tương đương ASP.NET MVC 5HandleUnknownAction trong ASP.NET 5

Controller.HandleUnknownAction() 

trong ASP.NET MVC 6/ASP.NET 5 là gì?

+1

Tò mò bạn thường sử dụng kịch bản nào phương pháp này cho? Tôi thấy rằng bạn có thể gửi trả lời có thể nói rằng một hành động không được tìm thấy hoặc thứ gì đó thuộc loại đó ... nhưng có bất kỳ điều gì khác bạn sử dụng cho ... –

+0

Mẫu được tạo động. Nói rằng tôi có/Templates/EmployeeDetails những gì tôi sẽ làm trước tiên hãy kiểm tra xem có một tập tin Views/Templates/EmployeeDetails.cshtml hay không. Nếu không, tôi sẽ sử dụng GenericDetails.cshtml mà bên trong sẽ sử dụng sự phản chiếu để xây dựng một html thích hợp để chỉnh sửa Nhân viên. Thay vì tránh sự cần thiết phải tạo ra phương pháp hành động + .cshtml chuyên dụng cho mỗi loại tôi có như 90% trong số họ sẽ chỉ là 1-to-1 bản đồ của các thuộc tính để đầu vào html. – Mikeon

Trả lời

6

Không có tương đương thực.

Action Selection trong MVC5/WebAPI2 là một quá trình gồm ba giai đoạn: 1. Chạy các tuyến đường 2. Chọn một bộ điều khiển 3. Chọn một hành động

Trong MVC6, bước 2 đã biến mất. Hành động được chọn trực tiếp bằng cách sử dụng giá trị tuyến đường - bạn sẽ nhận thấy rằng Controller.BeginExecute cũng biến mất. Bộ điều khiển 'mỏng' bây giờ.

Bạn có thể mô phỏng hành vi này nếu bạn muốn bằng cách sử dụng tuyến đường trực tiếp đến hành động được đề cập của bạn.

Xác định một hành động gọi là HandleUnknownAction trong điều khiển của bạn routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}"); routes.MapRoute("unknown_action", "{controller}/{*params}", defaults: new { action = "HandleUnknownAction"});

0

Một phương pháp khác là chỉ cần xác định các hành động vô danh như một tham số của tuyến đường của bạn:

Sử dụng phương pháp này, url foo/bar sẽ trả lại Chế độ xem bar.cshtml, foo/baz sẽ trả lại baz.cshtml v.v.