2012-08-26 31 views
5

मैं एक एमवीसी 3 हेल्पर के निर्माण के साथ थोड़ा खो गया हूं। मेरे पास मेरा सहायक है जो पैरामीटर के रूप में पारित अभिव्यक्ति के साथ एक पंक्ति बनाते हैं।एमवीसी 3 @<text></text> का उपयोग कैसे करें एचटीएमएल हेल्पर पैरामीटर

मैं इस तरह मेरी HtmlHelper उपयोग करना चाहते हैं:

@Html.AddTableFormField(model => model.UserName, @<text> 
     @Html.EditorFor(m => m.UserName)<span class="warning">Use only letters</span> 
    </text>) 

यह मेरा HtmlHelper (कुछ अप्रासंगिक कोड हटा दिया गया था) है:,

public static MvcHtmlString AddTableFormField<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> property, Expression<Func<TModel>> customFormat = null) 
    { 
     var metadata = ModelMetadata.FromLambdaExpression(property, htmlHelper.ViewData); 

     string displayName = metadata.DisplayName; 

     var propName = metadata.PropertyName; 

     if (string.IsNullOrWhiteSpace(displayName)) 
      displayName = propName; 

     MvcHtmlString htmlCustomFormat = null; 

     if (customFormat != null) 
     { 
      var deleg = customFormat.Compile(); 
      htmlCustomFormat = new MvcHtmlString(deleg().ToString()); 
     } 
     else 
      htmlCustomFormat = htmlHelper.EditorFor(property); 

     return new MvcHtmlString(string.Format("<tr>"+ 
       "<td class=\"form-label\">"+ 
        "<label class=\"editor-label\" for=\"{0}\">{1}<label>"+ 
       "</td>"+ 
       "<td class=\"form-data\">"+ 
        "{2}"+ 
       "</td>"+ 
      "</tr>", 
      propName, displayName, htmlCustomFormat)); 
    } 

मैं भी यह संकलन नहीं कर सकते क्योंकि @<text>...</text> पैरामीटर HtmlHelper के लिए अमान्य है क्योंकि यह 'लैम्ब्डा अभिव्यक्ति' है और इसे अभिव्यक्ति में परिवर्तित नहीं किया जा सकता है>

कोई भी इसे हल करने में मदद कर सकता है? मैं बस किसी भी प्रकार के @<text></text> को अपने एचटीएमएलहेपर में पास करना चाहता हूं, और यह इसे संकलित करता है और इसे एमवीसीएचटीएमस्ट्रिंग को निर्धारित रिटर्न में डाल देता है।

समाधान:

मैंने पाया मैं इस पोस्ट में क्या देख रहा था: ASP.Net MVC3 - Pass razor markup as a parameter

@<text></text> के लिए पैरामीटर प्रकार एक Func<object, HtmlHelper> किया जाना चाहिए!

उत्तर

4

मैंने पाया मैं इस पोस्ट में क्या देख रहा था पैरामीटर के रूप में स्ट्रिंग का उपयोग करें: ASP.Net MVC3 - Pass razor markup as a parameter

@<text></text> के लिए पैरामीटर प्रकार Func<object, HelperResult> होना चाहिए!

2

<text>...</text> or @:, एक उस्तरा वाक्य रचना (नहीं सी #) HTML तत्वों से बचना है तो मेरे usggestion हो जाएगा कि आप के बजाय @<text>

+1

लेकिन ऐसा करने से मैं पैरामीटर के अंदर एचटीएमएल हेल्पर्स का उपयोग करने के दृढ़ता से टाइप किए गए लाभ को खो दूंगा। वैसे भी, अगर मैं स्ट्रिंग का उपयोग करता हूं, तो क्या कोई तरीका है कि मैं इसे अपने सहायक में संकलित कर सकता हूं? (मेरी टैग उदाहरण की सामग्री द्वारा बनाई गई एक स्ट्रिंग की कल्पना करें) – IPValverde

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

  • कोई संबंधित समस्या नहीं^_^