2013-09-21 5 views
5

पर एक कस्टम एचटीएमएल हेल्पर जोड़ना मैं एक अच्छा उदाहरण/ट्यूटोरियल खोजने का प्रयास कर रहा हूं, यह बताते हुए कि मैं अपने एमवीसी 3 रेजर एप्लिकेशन के लिए अपने स्वयं के कस्टम एचटीएमएल हेल्पर्स कैसे बना सकता हूं और इसका उपयोग कर रहा हूं, मुझे यह पता चला है के रूप मेंएमवीसी प्रोजेक्ट

Adding your own HtmlHelper in ASP.NET MVC 3

इस प्रकार मैं, इसलिए

using System; 
using System.Collections.Generic; 
using System.Globalization; 
using System.Linq; 
using System.Linq.Expressions; 
using System.Web; 
using System.Web.Mvc; 
using System.Web.Mvc.Html; 

namespace MyWebApp 
{ 
    public static class ExtensionMethods 
    { 
     public static MvcHtmlString StateDropDownListFor<TModel, TValue> 
         (this HtmlHelper<TModel> html, 
             Expression<Func<TModel, TValue>> expression) 
     { 
      Dictionary<string, string> stateList = new Dictionary<string, string>() 
      { 
       {"AL"," Alabama"}, 
       {"AK"," Alaska"}, 
       {"AZ"," Arizona"}, 
       {"AR"," Arkansas"} 

       }; 
       return html.DropDownListFor(expression, 
         new SelectList(stateList, "key", "value")); 
     } 

    } 
} 

अब तक तो अच्छा के रूप में एक वर्ग (एक सा यह कांट छांट) बना लिया है

मेरी नियंत्रक के अंदर मैं भी संदर्भ

using System.Web.Mvc.Html; 

अब मेरे विचार अंदर मैं निम्नलिखित है

@Html.StateDropDownList(x => x.State) 

लेकिन मैं निम्न त्रुटि

System.web.mvc.htmlhelper<system.collections.generic.list<Profile.ProfileImages>> does  not contain a definition for StateDropDownList and no extension method  StateDropDownList acception a first argument of type  system.web.mvc.htmlhelper<System.Collections.Generic.List<Profile.ProfileImages>> could be  found(Are you missing a using directive of an assembly reference?) 

सका कोई मुझे बता पाने जोड़ा क्या मैं यहाँ गलत कर रहा हूँ।

+0

क्या आपके पास DisplayImageFor नामक एक HTML सहायक है? –

+0

@ UfukHacıoğulları क्षमा करें मैंने गलत त्रुटि कथन जोड़ा है, मैंने उपरोक्त अद्यतन किया है। –

उत्तर

15

आप अपने ध्यान में रखते हुए नेमस्पेस शामिल होना चाहिए:

@using MyWebApp 

या आप web.config से विचारों के सभी के लिए यह नाम स्थान आयात कर सकते हैं।

<system.web.webPages.razor> 
    <pages pageBaseType="System.Web.Mvc.WebViewPage"> 
    <namespaces> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Optimization" /> 
     <add namespace="System.Web.Routing" /> 
     <add namespace="MyWebApp" /> 
    </namespaces> 
    </pages> 
</system.web.webPages.razor> 
+0

आपकी मदद के लिए धन्यवाद। –

3

मुझे लगता है कि एक आसान विकल्प निम्न करने के लिए होगा: 1. हमेशा की तरह एक दृश्य बनाएँ, के रूप में आप की तरह है कि कोड और html के मिश्रण के साथ हमेशा की तरह में अपने सहायकों जगह। 2. दृश्य को App_Code फ़ोल्डर में ले जाएं। 3. अपने सभी विचारों में अपने में मदद करता है करने के लिए जाओ के रूप में तो (ध्यान दें कि _MyHelpers App_Code फ़ोल्डर में दृश्य का नाम है):

@_MyHelpers.JQMRadioTrueFalse("Voice Mail on your Home Phone?", "HomePhoneHasAnswerPhone", Model.TrueFalse, t.HomePhoneHasAnswerPhone) 

यह वह जगह है कि App_Code फ़ोल्डर में एक देखने का एक उदाहरण होगा उपरोक्त के रूप में किसी भी दृश्य पर पहुंचा:

@helper JQMRadioList(string Legend, string RadioListName, List<Fizz.DomainClasses.GenericClasses.GenericDropDownOption> options, bool Horizontal = false, string CurrentSelection = "") 
    { 
     <fieldset data-role="controlgroup" data-mini="true" data-theme="b" @((Horizontal) ? " data-type=\"horizontal\"" : "")> 
      <legend>@Legend:</legend> 
      @foreach (var li in options) 
      { 
       @JQMRadioListItem(RadioListName, li.TheValue, li.Text, CurrentSelection) 
      } 
     </fieldset> 
    } 
+0

सुनिश्चित नहीं है कि किसने इसे वोट दिया लेकिन क्या मैं पूछ सकता था कि कारण क्या था? – Michael

+0

यह उत्तर दिखाता है कि एक दृश्य में सहायक कैसे बनाएं। यह कोड आधारित विचारों का एक विकल्प है और डाउनवोट के लिए कोई कारण नहीं है। –

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