2011-11-03 18 views
12

Sorunun söylediği gibi, bir eleman içeren bir ActionLink kullanmak mümkün mü ve değilse, bunu başarmanın en iyi yolu nedir?Bir öğe içeren bir ActionLink kullanmak mümkün mü?

Örneğin, ben her şey bir köprü ... Aşağıdaki eserler olmak istiyorum, ben bir Span eleman söylüyorlar sağlar:

<a href="/Site/Page/@Model.ID?Type=test"> 
       <span class="box5">Click anywhere in this box</span> </a> 

o yayılma/css sınıfı box5 bu büyük yapar düşünün .. Aslında bir DIV oldu, ancak standartlara uymayan ve bu tamam görünüyor gibi görünüyor.

Bu işlem iyi çalışıyor ve çalışıyor, ancak bunun yerine bir ActionLink kullanmak var mı? Böyle (formlarından kopyalama) olarak sözdizimi tahmin etmeye çalıştık:

@using (Html.Actionlink){<span class="box5">Click anywhere in this box</span>} 

ve diğer birçok kombinasyonları olmadan herhangi bir şans.

Şimdi, el ile oluşturulmuş HTML çözümüm iyi çalışıyor ve onu bıraktığımıza memnun oldum, ancak MVC ActionLink kullanmak mümkün mü ve eğer endişelenmeli miyim, yoksa herhangi bir faydası olacak mıyım?

cevap

28

yapar span arasında @html> ActionLink Yöntemi Kullanılır.

+0

yararlı oldu, thx – Pyrejkee

1

actionlink içinde bir html etiketi belirtemezsiniz, ancak size iki çözüm önerebilirim: 1 actionlink işlevinizle genişletin. Bu nedenle, href içindeki html etiketini kullanarak href yaratan actionlink'i (örneğinizdeki gibi img veya span)

2 de uygulayabilirsiniz. Daha iyi Gerçek çözüm gibi ama bunun yerine "sihirli dize" Ürünün var

@Html.Raw(
    Html 
     .ActionLink("-replace-me-", .....) 
     .ToString() 
     .Replace(
       "-replace-me-", 
       @"<span class=""box5"">Click anywhere in this box</span>")) 

sınırlamasını aşmak için kullanabileceğiniz bir hack var

5

kullanmanın global.asax tanımladıkları kuralları kullandığından Sadece <span> </span> bir yaz

<a href="@Url.Action("Page","Site", new { id = Model.Id, @Type = "test" })"> 
<span class="box5">Click anywhere in this box</span> </a> 
+1

, Michael Stum'un önerisini kullanır, ancak bu hacki arka cebinizde tutun, Ajax.ActionLink – Jason

+0

+1 kullanırken kesinlikle işe yarayabilir Cevabı aldıktan sonra soruyu yeniden düzenlemek/yeniden yazmak istiyorum, fakat bunların Ajax bağlantıları olmasını istediğime karar verdim ve bu çözüm işe yaradı (tüm sabah sıkışıp kaldıktan sonra) ... yani, + 1/cevap Michael'a, ama sana da +1. – Wil

+0

Yanlış mı yapıyorum, ama sadece metin olarak işlediğinden emin değilim ... Ben jilet şeyleri sahne arkasında yapıyor olduğunu tahmin ediyorum. Http://www.Raw() 'de her şeyi kapsayan bu hile yapmak gibi görünüyor ... İlk başta bu kafa karıştırıcı görünüyor, ama, bu inanılmaz! – Wil