6

पर सदस्यता का उपयोग करके पंजीकरण फ़ॉर्म में अधिक फ़ील्ड जोड़ना मैंने एएसपीनेट एमवीसी 3 और माईएसक्ल पर आधारित एक साइट शुरू की है, मुझे MySQL .NET कनेक्टर के साथ काम करने की सदस्यता मिली है, इसलिए आपको प्राप्त होने वाले डिफ़ॉल्ट एप्लिकेशन के साथ एमवीसी 3 की एक नई परियोजना के साथ मेरे पास एक कार्यकारी रजिस्टर फॉर्म है और एक कामकाजी लॉगिन फॉर्मMySQL और MVC 3

है लेकिन ... मैं पंजीकरण फॉर्म में और फ़ील्ड कैसे जोड़ूं? मुझे पता है कि उन्हें अपना मॉडल और पेज कैसे जोड़ना है .. लेकिन मैं इस नए डेटा को उपयोगकर्ता के लिए बीमार कैसे बना सकता हूं? क्या मुझे अपने डेटाबेस में कॉलम बनाना होगा? या सदस्यता जानता है कि उन्हें किसी भी तरह स्वचालित रूप से कैसे बनाया जाए?

मैं केवल पंजीकरण के लिए 3 अधिक क्षेत्रों ...

धन्यवाद

उत्तर

8

में अपने गुणों को सेट मैं आप इस समाधान का सुझाव tion।

  1. एक मेज UserDetails
  2. बुलाया बनाएँ क्षेत्र है कि UserId

आप काम हो गया को इंगित जोड़ें।

अब UserId के आधार पर आपको खोखले फ़ील्ड पुनर्प्राप्त करने के लिए कुछ कक्षा की आवश्यकता है। आप अपना खुद का MembershipProvider भी कार्यान्वित कर सकते हैं और GetUserDetail() जैसी विधि जोड़ सकते हैं जो आपके अतिरिक्त फ़ील्ड वाले ऑब्जेक्ट को वापस कर देता है।

यह एक आधिकारिक ASP.NET लेख पर आधारित है: http://www.asp.net/web-forms/tutorials/security/membership/storing-additional-user-information-cs

+0

साइनअप प्रक्रिया के दौरान उपयोगकर्ता विवरण में मूल्य डालने के लिए कोड कहां लिखना है? क्योंकि मुझे खाता/Register.aspx.cs में कोई सम्मिलन कोड नहीं दिख रहा है –

9

अपने AccountModels.cs फ़ाइल पर एक नज़र डालें चाहते हैं। इसमें

public class RegisterModel 
{ 
    // User name, Email Adress, Password, Password confirmation already there 

    // you can add something like below 
    [Required] 
    [Display(Name = "Nickname")] 
    public string Nickname { get; set; } 
} 

आपके मॉडल में एक नई संपत्ति होने के बाद आपको दृश्य को अपडेट करने की आवश्यकता है। दृश्य> खाता में> Register.cshtml आप जोड़ना चाहिए

 <div class="editor-label"> 
      @Html.LabelFor(m => m.Nickname) 
     </div> 
     <div class="editor-field"> 
      @Html.PasswordFor(m => m.Nickname) 
      @Html.ValidationMessageFor(m => m.Nickname) 
     </div> 

आपको लगता है कि पूरे कर चुके हैं जब आप अपने नए संपत्ति का उपयोग करने के पंजीकरण तर्क अपडेट करना होगा। AccountController में जाओ और

[HttpPost] 
    public ActionResult Register(RegisterModel model) 
    { 
     if (ModelState.IsValid) 
     { 
      // Attempt to register the user 
      MembershipCreateStatus createStatus; 
      Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus); 

      if (createStatus == MembershipCreateStatus.Success) 
      { 
       FormsAuthentication.SetAuthCookie(model.UserName, false /* createPersistentCookie */); 
       // 
       // this would be a good place for you to put your code to do something with model.Nickname 
       //      
       return RedirectToAction("Index", "Home"); 
      } 
      else 
      { 
       ModelState.AddModelError("", ErrorCodeToString(createStatus)); 
      } 
     } 

     // If we got this far, something failed, redisplay form 
     return View(model); 
    } 

लगता है आप के लिए उपयोगकर्ता ASP.NET प्रोफाइल है कि जानकारी बनाए रखना चाहते हैं, तो आप Web.config

<profile> 
    <providers> 
    <clear /> 
    <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" /> 
    </providers> 
    <properties> 
    <add name="Nickname" defaultValue="False" type="System.String" /> 
    </properties> 
</profile> 
फिर अपने कोड में

में इस की जरूरत है - आप

कर सकते हैं
var userProfile = ProfileBase.Create(model.UserName); 

पाने के लिए/प्रोफाइल

+0

आप यह लिखा: // यह आप model.Nickname साथ कुछ करने के लिए अपने कोड डाल करने के लिए के लिए लेकिन क्या कोड है कि हो जाएगा एक अच्छी जगह हो सकता है ..? डेटाबेस के लिए एक और कॉल? इसने मेरे प्रश्न को हल नहीं किया कि मैं सदस्यता कैसे कर सकता हूं। मैं प्रोफाइल बेस के बारे में कुछ पढ़ता हूं। क्या यह है? .. डेटाबेस के लिए एकमात्र तरीका 2 कॉल है? –

+0

यह आप पर निर्भर करता है कि आप डेटा निरंतरता भाग को कैसे संभालना चाहते हैं। आप या तो प्रोफाइल का उपयोग कर सकते हैं (कुछ को पर्याप्त लचीला नहीं लगता है) या आप अपने डेटाकॉन्टेक्स्ट को प्रारंभ कर सकते हैं। अपडेट किए गए उत्तर – torm

+1

'उपयोगकर्ता प्रोफाइल करने के बाद। SetPropertyValue ("उपनाम", "मेरा उपनाम");' प्रयोक्ता प्रोफ़ाइल 'बचाएं() 'दृढ़ता के लिए। – bennedich

0

आप आयु और लिंग के लिए खेतों का निर्माण करना चाहते मान लीजिए। आप संबंधित पंजीकरण दृश्य में पंजीकरण के लिए सभी यूआई बना सकते हैं। इसका मतलब आयु और लिंग के लिए इनपुट फ़ील्ड बनाना है। फिर AccountController में रजिस्टर दृश्य पर जाएं और एप्लिकेशन यूज़र ऑब्जेक्ट में आयु और लिंग फ़ील्ड जोड़ें (जिसे पहले ही घोषित किया गया है)। और वहां तुम जाओ।

इस पर विस्तृत जानकारी पाया जा सकता है http://blog.falafel.com/customize-mvc-5-application-users-using-asp-net-identity-2-0/