2009-08-07 2 views
7

Tôi đang xây dựng một Ajax.ActionLink trong C# mà bắt đầu:làm cách nào để bạn thêm một ký tự LINE MỚI trong phần chuỗi của một ActionLink?

<%= Ajax.ActionLink("f lastname", ...more stuff 

và tôi muốn có được một ký tự dòng mới giữa dòng chữ "f" và "lastname". Làm thế nào tôi có thể thực hiện điều này? Tôi nghĩ rằng nhân vật đặc biệt là \ n nhưng điều đó không hiệu quả, và <br> cũng không hoạt động.

Trả lời

1

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

<%= Ajax.ActionLink("f<br />lastname", ...more stuff 
+1

Bạn có thể phải bao gồm p này trong @ Html.Raw những ngày này. –

0

Bạn không thể sử dụng <br /> vì phương pháp ActionLink (và thực sự tôi tin rằng tất cả các phương pháp html và mở rộng ajax) mã hóa các chuỗi. Như vậy, sản lượng sẽ là một cái gì đó giống như

<a href="...">f&lt;br /&gt;lastname</a> 

gì bạn có thể thử thay vào đó sẽ là một định dạng:

<%= string.Format(Ajax.ActionLink("f{0}lastname", ...more stuff), "<br />") %> 
+0

Darn không hoạt động. Điều đó khiến tôi a-- "System.Web.HttpCompileException bị hủy bởi mã người dùng lỗi CS1010: Dòng mới trong hằng số" – Whozumommy

+0

Hmm, đang cố gắng sử dụng. Thay thế thay cho chuỗi.format? Tôi đã không thực sự làm việc với phần mở rộng ajax, vì vậy tôi không biết một cách khác để làm điều này. – Joel

0

Các \n từng làm việc cho tôi. Nhưng bây giờ nó có vẻ là depricated. Ngoài ra, bạn có thể sử dụng phương pháp NewLine, ví dụ:

string jay = "This is a" + Environment.NewLine + "multiline" + Environment.NewLine + "statement"; 
0

Bạn đã thử kết hợp \ r \ n chưa?

3

Bạn có thể phải trở lại làm một cái gì đó như:

<a href="<%= Url.Action("action") %>">f<br />last</a> 

Và sau đó dây trong các bit Ajax bằng tay.

0

Làm thế nào về:

<%= Server.UrlDecode(Ajax.ActionLink(Server.UrlEncode("f<br/>lastname"), ...more stuff 
0

này làm việc cho tôi -

<%= HttpUtility.HtmlDecode(Html.ActionLink("AOT &lt;br/> Claim #", "actionName"))%> 
0

Tôi nghĩ rằng câu trả lời Andrew Hare là đúng. Nếu bạn có yêu cầu phức tạp hơn một chút, bạn có tùy chọn để tạo AjaxHelper hoặc HtmlHelper của riêng bạn. Điều này sẽ liên quan đến việc tạo ra các phương pháp mở rộng tùy chỉnh mà làm việc trên AjaxHelper và HtmlHelpers, bằng cách làm một cái gì đó như:

public static class CustomHtmlHelperExtensions 
{ 
    public static MvcHtmlString FormattedActionLink(this HtmlHelper html, ...) 
    { 
     var tagBuilder = new TagBuilder("a"); 

     // TODO : Implementation here 

     // this syntax might not be exact but you get the jist of it! 
     return MvcHtmlString.Create(tagBuilder.ToString()); 
    } 
} 

Bạn có thể sử dụng dotPeek hoặc công cụ .NET phản ánh yêu thích của bạn để kiểm tra các phần mở rộng tiêu chuẩn đi kèm với ASP.NET MVC (ví dụ, ActionLink) vv để tìm cách Microsoft đã triển khai hầu hết các phương thức mở rộng đó. Họ có một số mẫu khá hay để viết những thứ đó. Trước đây, tôi đã thực hiện phương pháp này để đơn giản hóa việc xuất HTML theo cách dễ đọc, chẳng hạn như, cho Google Maps hoặc tích hợp Bing Maps, để tạo các tùy chọn như ActionImage ví dụ: @Html.ActionImage(...) hoặc để tích hợp xuất HTML định dạng dệt bằng cách bật cú pháp như @Html.Textile("textile formatted string").

Nếu bạn xác định điều này trong một hội đồng riêng biệt (như tôi làm), hãy nhớ bao gồm điều này vào tài liệu tham khảo dự án của bạn và sau đó thêm nó vào Web.config của dự án là tốt.

Rõ ràng, cách tiếp cận này là quá mức cần thiết cho các mục đích cụ thể của bạn và vì lý do này, phiếu bầu của tôi dành cho phương pháp tiếp cận của Andrew Hare cho trường hợp cụ thể của bạn.

0

Đã vài năm kể từ khi câu hỏi được đặt ra, nhưng tôi đã gặp sự cố với câu hỏi đó.Tôi tìm thấy câu trả lời cho được (trong MVC):

văn bản trong ActionLink của bạn: ... ActionLink ("TextLine1" + Environment.Newline + "TextLine2", ...

Trong ActionLink, có một lớp trỏ đến một css với dòng này:

khoảng trắng:. trước;

Vậy đó tôi đã nhìn thấy câu trả lời mà họ đưa toàn bộ Actionline trong < pre> </pre> thẻ, nhưng điều đó gây ra nhiều vấn đề hơn là giải quyết.