2010-09-01 35 views
34

Tôi muốn cung cấp cho tương tự được tạo với một mã định danh Html.ActionLink HTML để tôi có thể thay đổi CSS tùy thuộc vào vị trí của tôi. Tôi có một MasterPage với một tập hợp các liên kết và tôi muốn để phân biệt các hoạt động "Tab" với Jquery thay đổi css đó #ID hoạt độngHtml.ActionLink với id HTML được chỉ định?

Ngay bây giờ tôi đang sử dụng:

<%: Html.ActionLink("Some View", "Index", "controller")%> 

Nó tạo:

<a href="/controller">Some View</a> 

tôi muốn tạo:

<a id="something" href="/controller">Some View</a> 

là có thể? Tôi đã thử:

<%: Html.ActionLink("Some View", "Index", "controller", new {id="blahbla")%> 

Nhưng mà tạo ra:

<a href="/controller/Length?5">Some View</a> 
+1

Tôi không quen thuộc với cú pháp chính xác, nhưng nên rằng '{ 'thực sự không bị đóng cửa? –

+0

Nó nên, nhưng tôi đã có thể nghĩ rằng máy chủ web sẽ tạo ra một lỗi, khi họ đã cố gắng để chạy trang web đó. Tôi nghĩ đó là lỗi đánh máy. Áp phích ban đầu có thể xác nhận không? – MrBliz

Trả lời

47

Bạn đã đi đúng hướng. Tôi không chắc chắn lý do tại sao nó không hoạt động cho bạn vì mã của bạn có lỗi đánh máy sẽ tạo ra lỗi } expected. Sau đây là những gì bạn đang tìm kiếm:

<%= Html.ActionLink("Test Link", "SomeAction", "SomeController", 
     null, new {id = "someID" }) %> 

nào sản xuất teh HTML sau:

<a href="/SomeController/SomeAction" id="someID">Test Link</a> 

Edit: Tôi chỉ nhận ra những gì vấn đề là bởi vì tôi đã mis-đọc những gì bạn đã cố gắng. Bạn đang sử dụng quá tải không đúng để chuyển vào phần tử html id. Có thể bạn đã chuyển thông số new { id="blah" } vào thông số routeValues, điều này sẽ khiến thông số này được sử dụng khi tạo liên kết tuyến đường, thay vì thông số htmlAttributes là thứ bạn muốn.

Tôi nghĩ rằng bạn đang sử dụng:

ActionLink(string linkText, string actionName, Object routeValues, 
    Object htmlAttributes) 

Khi những gì bạn cần để sử dụng là quá tải sau như tôi đã làm ở trên trong câu trả lời của tôi:

ActionLink(string linkText, string actionName, string controllerName, 
    Object routeValues, Object htmlAttributes) 

Mà làm cho chắc chắn new { id="blah" } đang được truyền vào thông số htmlAttributes.

4

Hãy thử điều này:

<%: Html.ActionLink("Some View", "Index", "controller", null, new {id="something}")%> 
2

Về cơ bản nó đưa ra một lỗi vì không có tình trạng quá tải phương pháp có chữ ký bạn muốn .

Chữ ký gần nhất với một trong đó bạn cần là

public static string ActionLink(
this HtmlHelper htmlHelper, 
string linkText, 
string actionName, 
string controllerName, 
Object routeValues, 
Object htmlAttributes 

)

Bạn đang đi thuộc tính id vào routevalue đó là lý do nó đem lại cho bạn những href buồn cười. chuyển null vào routevalue, sau đó thêm htmlattributes của bạn

1

thử này

@Html.ActionLink("Forgot your access?", "RecoverPassword", 
"Account", new { area = "registration-full.html" }, 
new { @class = "col-xs-6", id = "login-forget-link" }) 
Các vấn đề liên quan