2012-02-22 14 views
12

मैं मेरे विचारMVC उस्तरा-स्ट्रिंग प्राप्त करने की आवश्यकता

 @Html.DisplayFor(modelItem => item.FirstName) 

के निम्नलिखित के अंदर मैं पहला नाम के पहले प्रारंभिक प्राप्त करने की आवश्यकता है।

मैं

@Html.DisplayFor(modelItem => item.FirstName).Substring(1,1) 

की कोशिश की, लेकिन यह काम करने के लिए प्रतीत नहीं होता। मैं निम्नलिखित त्रुटि मिलती है: .. 'System.Web.Mvc.MvcHtmlString' 'सबस्ट्रिंग' और कोई विस्तार के लिए एक परिभाषा शामिल नहीं है

+0

यदि आप 'सबस्ट्रिंग (0,1)' के बजाय 'सबस्ट्रिंग (1,1) 'चाहते थे तो मैं वास्तव में आश्चर्यचकित हूं। – tvanfosson

उत्तर

-9

आप केवल item.FirstName का पहला वर्ण प्रदर्शित करने के लिए क्यों नहीं चाहते हैं, तब:

@Html.DisplayFor(modelItem => item.FirstName.Substring(1,1)) 

आपके पास यह बंद ब्रैकेट का गलत पक्ष है।

+5

यह काम नहीं करेगा। आपको 'अवैधऑपरेशन अपवाद' मिलेगा क्योंकि HTML कॉलर्स द्वारा उपयोग किए जाने वाले लैम्ब्डा अभिव्यक्तियों में विधि कॉल समर्थित नहीं हैं। –

7

आपको व्यू कोड में इसे प्राप्त करने की कोशिश करने के बजाय अपने व्यूमोडेल पर एक संपत्ति डालना चाहिए। विचार केवल जिम्मेदारी है कि मॉडल द्वारा इसे क्या दिया गया है, इसे मॉडल से नया डेटा नहीं बनाना चाहिए।

5

शायद मैं सुझाव दूंगा कि यह करने के लिए दृश्य सही जगह नहीं है। आपके पास शायद एक अलग मॉडल प्रॉपर्टी होनी चाहिए, FirstInitial, जिसमें तर्क शामिल है। आपका विचार बस इसे प्रदर्शित करना चाहिए।

public class Person 
    { 
     public string FirstName { get; set; } 

     public string FirstInitial 
     { 
      get { return FirstName != null ? FirstName.Substring(0,1) : ""; } 
     } 

     ... 
    } 


    @Html.DisplayFor(modelItem => modelItem.FirstInitial) 
22

आप ध्यान में रखते हुए लागू कर सकता है इस प्रकार है:

@Html.DisplayFor(modelItem => modelItem.FirstName).ToString().Substring(0,5) 
+1

यह मेरे लिए बहुत अच्छा काम करता है, धन्यवाद आवंटित! – ShaunOReilly

+0

आकर्षण के रूप में काम किया। धन्यवाद – MuniR

1

आप एक कस्टम विस्तार पद्धति के रूप में नीचे दिखाया गया है का उपयोग कर सकते हैं:

/// <summary> 
/// Returns only the first n characters of a String. 
/// </summary> 
/// <param name="str"></param> 
/// <param name="start"></param> 
/// <param name="maxLength"></param> 
/// <returns></returns> 
public static string TruncateString(this string str, int start, int maxLength) 
{   
    return str.Substring(start, Math.Min(str.Length, maxLength)); 
} 

आशा इस मदद करता है ...

-1

यह मेरे लिए काम करता है (कोई सहायक नहीं):

@item.Description.ToString().Substring(0, (item.Description.Length > 10) ? 10 : item.Description.Length) 
संबंधित मुद्दे

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