Tôi đang làm việc trên cung cấp tên thân thiện cho bộ điều khiển MVC 4 của tôi và tôi muốn làm một cái gì đó giống như phong cách [ActionName="My-Friendly-Name"]
, nhưng cho toàn bộ bộ điều khiển.C# MVC 4 ControllerName thuộc tính
Tôi không thể tìm thấy bất kỳ thông tin nào về thuộc tính như vậy, vì vậy tôi sẽ làm như thế nào? Ngoài ra, tôi sẽ cần phải thêm một MapRoute mới để xử lý nó?
EDIT:
Ví dụ, tôi muốn chuyển hướng url sau:
http://mysite.com/my-reports/Details/5
được chuyển đến bộ điều khiển sau:
[ControllerClass="my-reports"] // This attribute is made up. I'd like to know how to make this functionality
public class ReportsController : Controller
{
//
// GET: /Reports/
public ActionResult Index()
{
return View();
}
public ViewResult Details(int id)
{
Report report = db.Reports.Single(g => g.Id == id);
return View(report);
}
public ActionResult Create()
{
return View();
}
[HttpPost]
public ActionResult Create(Report item)
{
try
{
if (ModelState.IsValid)
{
item.Id = Guid.NewGuid();
_context.Reports.AddObject(item);
_context.SaveChanges();
return RedirectToAction("Index");
}
return View(item);
}
catch (Exception)
{
return View(item);
}
}
}
Lý do là vì một số định tuyến xảy ra dựa trên giá trị được lưu trữ trong cơ sở dữ liệu (Vì vậy, thay vì có url là '/ Items/5', url có thể giống như'/Media/Music/Somebody-to-Love ') và điều này đã gây ra một vài biến chứng đặc biệt mà cách dễ nhất để sửa chữa sẽ là cho phép các chức năng tương tự như' [ActionName] 'nhưng đối với bộ điều khiển. Nếu không có giải pháp, tôi sẽ phải tìm ra cách khác. Tôi chắc chắn có, đây chỉ là suy nghĩ đầu tiên của tôi :) –
Mát mẻ, hiểu, hãy nhìn vào bản cập nhật trong câu trả lời của tôi. –
Một số tùy chỉnh của tôi thích http://www.domain.com/produkter thay vì http://www.domain.com/product. Tôi không muốn có ProdukterController và trộn bằng tiếng Thụy Điển trong mã của tôi. Tôi đã giải quyết nó bằng cách sử dụng AttributeRouting để tạo các tuyến tùy chỉnh cho tất cả các bộ điều khiển và hành động của tôi. –