2011-10-23 11 views
10

मेरी webgrid में मैं मूल्य के आधार पर छवियों को प्रदर्शित करने की जरूरत है .. कोड नीचेसशर्त webgrid में एक छवि प्रदर्शित - MVC 3

@model TraktorumMVC.Models.ManagePhotos 
@{ 
    ViewBag.Title = "ManagePhotos"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
    var grid = new WebGrid(Model.AdPhotos); 
} 


    @grid.GetHtml(
     displayHeader: false, 
     columns: grid.Columns(
      grid.Column(format: (item) => 
       { 
        if (item.IsMainPreview == true) 
        { 
         return @<text><img src="@Url.Content("~/Content/images/preview-photo.gif")" alt="Image "/></text>; 
        } 
        else 
        { 
         return @<text><img src="@Url.Content("~/Content/images/non-preview-photo.gif")" alt="Image "/></text>; 
        } 
       } 
       ),    
      grid.Column(format: (item) => Html.ActionLink("Remove Photo", "RemovePhoto", "Images", new { photoID = @item.Id }, new { @class = "RemovePhoto" })) 
     )); 

दिया जाता है मुझे यकीन है कि मैं कैसे webgrid में if उपयोग कर सकते हैं नहीं कर रहा हूँ। मैं बस की कोशिश की है कि इसकी त्रुटि

The best overloaded method match for 'System.Web.Helpers.WebGrid.Column(string, string, System.Func<dynamic,object>, string, bool)' has some invalid arguments 

उत्तर

23

grid.Column विधि के format पैरामीटर में आप एक साथ लगा रहे हैं एक लैम्ब्डा अभिव्यक्ति ताकि आप निश्चित रूप से if उपयोग कर सकते हैं निम्नलिखित .getting काम नहीं कर रहा। लेकिन समस्या यह है कि जब आप HTML को आउटपुट करने के लिए रेजर में "कोड मोड" में हैं तो @ का उपयोग नहीं कर सकते हैं।

@grid.GetHtml(
    displayHeader: false, 
    columns: grid.Columns(
      grid.Column(format: (item) => 
       { 
        if (item.IsMainPreview == true) 
        { 
         return Html.Raw(string.Format("<text><img src=\"{0}\" alt=\"Image\"/></text>", Url.Content("~/Content/images/preview-photo.gif"))); 
        } 
        else 
        { 
         return Html.Raw(string.Format("<text><img src=\"{0}\" alt=\"Image\"/></text>", Url.Content("~/Content/images/non-preview-photo.gif")));       
        } 
       } 
      ),    
      grid.Column(format: (item) => Html.ActionLink("Remove Photo", "RemovePhoto", "Images", new { photoID = item.Id }, new { @class = "RemovePhoto" })) 
     )); 
इसके अलावा अंतिम पंक्ति में

बजाय new { photoID = @item.Id }: तो आप (जैसे Html.ActionLink वहाँ examples के बहुत सारे हैं में निर्मित) एक HtmlHelper में छवि टैग निर्माण लपेट या HTML लौटने के लिए HTML.Raw विधि का उपयोग करने की आवश्यकता है आपको new { photoID = item.Id }
लिखना चाहिए यहां रेज़र के बारे में अधिक जानने के लिए विस्तृत tutorial है।

+0

महान, इस कोड के लिए धन्यवाद! – juFo

+0

यह एमवीसी 3 में बहुत अच्छा काम करता है। क्या आप जानते हैं कि इसे URL के बिना एमवीसी 4 में कैसे काम करना है। सामग्री। मैंने एक नया सवाल पोस्ट किया है। http://stackoverflow.com/questions/13711753/conditional-display-an-image-in-webgrid-mvc-4 – Joe

+0

मैंने इसे अतीत में वोट दिया और यह अभी मुझे फिर से मदद मिली। अगर मैं आपको 100 वोट दूंगा! : डी –

संबंधित मुद्दे