MVC

2009-06-04 14 views
14

içinde bir Html.ActionLink sınıfını dinamik olarak değiştirmek için , belirli bir ölçüt temelinde denetleyicideki bir ActionLink sınıfını değiştirmenin bir yolunu arıyorum (modelde bulunamadığı için görünümün kendisinde şartlı). Ama bu elementle çalışmamı sağlayan ViewData'yı ("isim") bulamıyorum (bunun mümkün olduğunu farz ediyorum, fakat bir şeyleri özlüyorum). MVC

benim bakış

<%=Html.ActionLink("View", "Index", "Home")%> 

yılında şöyle bir html yardımcınız var ama benim denetleyicisi sınıf gibi veya onclick bir öznitelik eklemek için aşağıdaki gibi bu başvuru nasıl emin değilim.

ViewData("View").attributes.add("class", "active") 

cevap

29

Görünümün bir endişesi olduğundan, CSS özelliklerini denetleyiciden ayarlamazsınız. Ekleyebilir HTML şöyle ActionLink için bağlıyor:

Alternatif siz "elle" senin çapalar inşa edebilirsiniz
<%=Html.ActionLink("View Cases", "Index", "Home", new { @class="active" })%> 

:

<% var activeClass = someCondition ? "active" : ""; %> 
<a href="<%=Url.Action("Index", "Home")%>" class="<%=activeClass%>">View Cases</a> 
:

<a href="<%=Url.Action("Index", "Home")%>" class="active">View Cases</a> 

Yoksa şartlı aktif sınıfını ayarlamak gerekiyorsa

+0

kabul edildi, ancak kullanıcı kimlik bilgilerini temel alan bir menü seçeneğini göstermem/gizlemem gerektiğinde (web formları MVC'ye dönüştürülür) - MVC'de bunu nasıl yapabilirim? –

+1

Daha fazla örnekle düzenlenmiştir. –

+3

Kimlik bilgilerine dayalı olarak gösterme/gizleme için, bir if bloğuyla çevreleyin veya mantığı kapsüllemek için bir HtmlHelper uzantı yöntemi yazın. Kullanıcının doğrulanması durumunda kontrol cihazından bir değer iletebilir ve ardından bu görünümü kontrol edebilirsiniz. –

2

Razor görünümünde aşağıdaki gibi bir şey yapabilirsiniz:

@model AssessmentQuestionViewModel 

@{var newClass = Model.AnswerValue == 0 ? "not-answered" : string.Empty;} 

<a href="@Url.Action("Index", "Home")" class="wizard-step @newClass">View Question</a>