Thông thường trong chế độ xem ASP.NET, người ta có thể sử dụng chức năng sau để lấy URL (không phải là <a>
):
Url.Action("Action", "Controller");
Tuy nhiên, tôi không thể tìm thấy cách thực hiện từ trình trợ giúp HTML tùy chỉnh. Tôi có
public class MyCustomHelper
{
public static string ExtensionMethod(this HtmlHelper helper)
{
}
}
Biến của trình trợ giúp có các phương thức Action và GenerateLink, nhưng chúng tạo ra <a>
. Tôi đã thực hiện một số hoạt động đào mã nguồn ASP.NET MVC, nhưng tôi không thể tìm thấy một cách đơn giản.
Vấn đề là Url ở trên là một thành viên của lớp khung nhìn và để khởi tạo nó, nó cần một số bối cảnh và bản đồ tuyến đường (mà tôi không muốn xử lý và dù sao tôi cũng không nên làm vậy). Ngoài ra, thể hiện của lớp HtmlHelper cũng có một số bối cảnh mà tôi giả sử là siêu tập hợp thông tin ngữ cảnh của cá thể Url (nhưng một lần nữa tôi không muốn xử lý nó).
Tóm lại, tôi nghĩ là có thể nhưng vì tất cả các cách tôi có thể nhìn thấy, liên quan đến một số thao tác với một số công cụ ASP.NET nội bộ ít nhiều, tôi tự hỏi liệu có cách nào tốt hơn không.
Chỉnh sửa: Chẳng hạn, một khả năng tôi thấy sẽ là:
public class MyCustomHelper
{
public static string ExtensionMethod(this HtmlHelper helper)
{
UrlHelper urlHelper = new UrlHelper(helper.ViewContext.RequestContext);
urlHelper.Action("Action", "Controller");
}
}
Nhưng nó có vẻ không đúng. Tôi không muốn tự mình xử lý các trường hợp của UrlHelper. Nó phải là một con đường dễ dàng hơn.