2009-06-04 12 views
14

में एक HTML.ActionLink की गति को गतिशील रूप से बदलने के लिए कैसे मैं विशिष्ट मानदंडों के आधार पर नियंत्रक में एक्शनलिंक की कक्षा को बदलने का एक तरीका ढूंढ रहा हूं (मॉडल में नहीं मिला है इसलिए मैं एक नहीं लिख सकता दृश्य में सशर्त खुद)। लेकिन मुझे व्यूडाटा ("नाम") नहीं मिल रहा है जो मुझे w/इस तत्व को काम करने की अनुमति देता है (मुझे लगता है कि यह संभव है, लेकिन मुझे कुछ याद आ रहा है)।एमवीसी

मैं मेरे विचार

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

में तो जैसे किसी HTML सहायक है लेकिन मेरे नियंत्रक में मैं इस संदर्भ के लिए, नीचे की तरह वर्ग की तरह या onclick एक विशेषता जोड़ने के लिए यकीन नहीं है।

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

उत्तर

29

आप नियंत्रक से सीएसएस विशेषताओं को सेट नहीं करते हैं क्योंकि यह दृश्य की चिंता है। एचटीएमएल आप जोड़ सकते हैं इस तरह ActionLink के लिए जिम्मेदार बताते हैं:

<%=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> 

या आप सशर्त सक्रिय वर्ग निर्धारित करने की आवश्यकता है, तो

+0

सहमत हुए, लेकिन ऐसे मामले में जहां मुझे उपयोगकर्ता क्रेडेंशियल (वेबफॉर्म एमवीसी में परिवर्तित) के आधार पर मेनू विकल्प दिखाने/छुपाने की आवश्यकता है - मैं एमवीसी में ऐसा कैसे कर सकता हूं? –

+1

अधिक उदाहरणों के साथ संपादित करें। –

+3

क्रेडेंशियल के आधार पर दिखने/छिपाने के लिए, या तो ब्लॉक के साथ घिरा हुआ है या तर्क को समाहित करने के लिए HtmlHelper एक्सटेंशन विधि लिखना है। यदि उपयोगकर्ता प्रमाणित है तो आप नियंत्रक से एक मान पास कर सकते हैं और उसके बाद दृश्य में जांचें। –

2

Razor में देखें कि आप ऐसा कुछ कर सकते हैं:

@model AssessmentQuestionViewModel 

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

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