2011-12-20 11 views
6

के साथ सशर्त डिस्प्ले तत्व क्या नीचे दिए गए तत्वों को सशर्त रूप से (रेज़र के साथ) दिखाने/छिपाने का कोई शानदार तरीका है? दृश्य बहुत बड़ी है और मैं रखरखाव को लेकर चिंतित हूं:रेजर

@if(@Model.Atendimento.PrazosEEntregas.Visivel) 
{ 
    <div> 
     <h4>Prazos e entrega do serviço</h4> 

     @if (!string.IsNullOrWhiteSpace(@Model.Atendimento.PrazosEEntregas.PrazoFinalizacaoServico)) 
     { 
      <p>@Model.Atendimento.PrazosEEntregas.PrazoFinalizacaoServico</p> 
     } 

     @if (!string.IsNullOrWhiteSpace(@Model.Atendimento.PrazosEEntregas.PrazoRetiradaDocumento)) 
     { 
      <p><strong>Prazo de retirar o documento:</strong> @Model.Atendimento.PrazosEEntregas.PrazoRetiradaDocumento</p> 
     } 

     @if (!string.IsNullOrWhiteSpace(@Model.Atendimento.PrazosEEntregas.OndeRetirarServico)) 
     { 
      <p><strong>Onde retirar/receber:</strong> @Model.Atendimento.PrazosEEntregas.OndeRetirarServico</p> 
     } 

     @if (!string.IsNullOrWhiteSpace(@Model.Atendimento.PrazosEEntregas.ObservacaoPrazoRetirada)) 
     { 
      <p><strong>Observação:</strong> @Model.Atendimento.PrazosEEntregas.ObservacaoPrazoRetirada</p> 
     } 
    </div> 
} 

धन्यवाद, Hoisel

उत्तर

7

आप एक कस्टम सहायक लिख सकता है जो परिस्थिति के उत्पादन होगा सामग्री:

public static class HtmlExtensions 
{ 
    public static IHtmlString FormatValue(
     this HtmlHelper htmlHelper, 
     string value, 
     string label 
    ) 
    { 
     if (string.IsNullOrWhiteSpace(value)) 
     { 
      return MvcHtmlString.Empty; 
     } 

     var result = string.Format(
      "<p><strong>{0}</strong> {1}</p>", 
      htmlHelper.Encode(label), 
      htmlHelper.Encode(value) 
     ); 
     return new HtmlString(value); 
    } 
} 

और उसके बाद :

@Html.FormatValue(
    Model.Atendimento.PrazosEEntregas.ObservacaoPrazoRetirada, 
    "Observação:" 
) 

एक और संभावना है कि एक di टेढ़ा टेम्पलेट:

@model string 
@if (!string.IsNullOrWhiteSpace(Model)) 
{ 
    <p> 
     <strong>@ViewData.ModelMetadata.DisplayName</strong> 
     @ViewData.TemplateInfo.FormattedModelValue 
    </p> 
} 

और आपके विचार मॉडल पर:

@Html.DisplayFor(x => x.Atendimento.PrazosEEntregas.ObservacaoPrazoRetirada) 

तो फिर तुम स्ट्रिंग प्रकार के लिए एक प्रदर्शन टेम्पलेट (या एक कस्टम एक) निर्धारित कर सकते हैं

[DisplayName("Observação:")] 
[UIHint("MyTemplate")] 
public string ObservacaoPrazoRetirada { get; set; } 
0

यह है मॉडल के तर्क को संभालने के लिए दृश्य का काम नहीं। उस तर्क को उचित नियंत्रक में ले जाएं।

विचार करना एक बात है कि आपका विचार बहुत बड़ा होना शुरू हो रहा है, आंशिक विचार बनाना शुरू करें। शायद कुछ कोड का पुन: उपयोग किया जा सकता है।

2

आप कोड redude सकता है में तुम इतनी तरह कोड के कुछ पुनर्रचना द्वारा देखें:

<h4>Prazos e entrega do serviço</h4> 

@{ PrazosEEntregas prazosEEntregas = Model.Atendimento.PrazosEEntregas; } 

@if (!string.IsNullOrWhiteSpace(prazosEEntregas.PrazoFinalizacaoServico)) 
{ 
    <p>prazosEEntregas.PrazoFinalizacaoServico</p> 
} 
@if (!string.IsNullOrWhiteSpace(prazosEEntregas.PrazoRetiradaDocumento)) 
{ 
    //etc. 
} 

मैं अपने कोड में prazosEEntregas के प्रकार पर अनुमान लगाया है, तो आप को बदलने के लिए है कि सही प्रकार के साथ की जरूरत हो सकती ।