Thông thường trong một cái nhìn ASP.NET người ta có thể sử dụng chức năng sau đây để có được một URL (không phải là một <a>
):Tạo URL trong HTML helper
Url.Action("Action", "Controller");
Tuy nhiên, tôi không thể tìm thấy làm thế nào để làm điều đó từ một phong tục Trình trợ giúp HTML. Tôi có
public class MyCustomHelper
{
public static string ExtensionMethod(this HtmlHelper helper)
{
}
}
Biến số trợ giúp có các phương thức Hành động và tạo liên kết, nhưng chúng tạo ra số <a>
. Tôi đã làm một số đào trong 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 đề ở đây là Url ở trên là thành viên của lớp chế độ xem và cho bản đồ của 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à tôi không được phép). Ngoài ra, thể hiện của lớp HtmlHelper cũng có một số ngữ cảnh mà tôi giả định là một trong hai tập con của 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ĩ rằng nó có thể nhưng vì tất cả những 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ố nội dung ASP.NET nhiều hơn hoặc ít hơn, tôi tự hỏi liệu có một cách tốt hơn hay không.
Edit: Ví dụ, 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ó dường như không đúng. Tôi không muốn được đối phó với các trường hợp của UrlHelper bản thân mình. Nó phải là một con đường dễ dàng hơn.
Tôi nhận ra đây là một ví dụ đơn giản, nhưng ví dụ được hiển thị tôi sẽ mở rộng UrlHelper thay vì HtmlHelper. Mã thực của bạn có thể cần cả hai, mặc dù. –
Xin lỗi, tôi phải rõ ràng hơn: Tôi muốn thực hiện một số hiển thị HTML trong phương thức mở rộng và tôi cần tạo URL cho nó. –