2011-04-12 15 views
41

मेरी नजर में मैं निम्नलिखित तत्वASP.Net MVC3 Html.PasswordFor पॉप्युलेट नहीं है

@Html.PasswordFor(model => model.Password) 

यह एक स्क्रीन है कि बनाता है/अपडेट उपयोगकर्ता की जानकारी को है। जब मैं उपयोगकर्ता को अपडेट करने का प्रयास कर रहा हूं तो यह फ़ील्ड खाली रहता है। जब मैं इस तत्व को टेक्स्टबॉक्स में बदलता हूं तो यह डेटा प्राप्त करता है। मैं पासवर्ड फ़ील्ड को पॉप्युलेट कैसे करूं?

+8

यदि आपके पास बॉक्स में डालने में सक्षम होने के लिए उपयोगकर्ता का पासवर्ड है, तो आपने एक (लगभग) अक्षम्य बुराई की है। – SLaks

+0

मुझे लगता है कि इसके लिए एक वैध मामला यह है कि यदि आप पासवर्ड फ़ील्ड को डॉट्स या डॉट्स दिखाने के लिए चाहते हैं तो यह इंगित करने के लिए कि कोई पासवर्ड पहले से मौजूद है या नहीं। जब आप अपने मॉडल को पॉप्युलेट करते हैं तो आप 'model.Password = String.IsNullOrEmpty (user.Password) कह सकते हैं? "": "********"; ', लेकिन' पासवर्डफोर 'मान का उपयोग नहीं करेगा। तो आप एक संकेत नहीं दे सकते कि कोई मूल्य मौजूद है या नहीं। – xr280xr

उत्तर

35

यह डिज़ाइन किया गया है। पासवर्ड आकस्मिक resubmits को रोकने के लिए भरे नहीं हैं, और पृष्ठ को अनएन्क्रिप्टेड पासवर्ड रखने से रोकने के लिए। स्पष्ट रूप से पासवर्ड शुरू करना गलत था अगर आप प्रमाण-पत्र वापस पोस्ट कर रहे हैं।

अपने मामले में, आप एक एक्सटेंशन बना सकते हैं जो डेटा इनपुट करता है, या बस पासवर्ड प्रकार के HTML इनपुट का उपयोग करें।

4

एमवीसी आपको किसी कारण से ऐसा करने से बचाता है। आपको वास्तव में ऐसा करने में सक्षम नहीं होना चाहिए क्योंकि उपयोगकर्ता पासवर्ड को अनएन्क्रिप्टेड और अप्रशिक्षित नहीं किया जाना चाहिए।

<input type="password" name="Password" id="Password" value="@Model.Password" /> 
+0

सादे टेक्स्टस्टॉन्डर के बारे में, अच्छी साइट लेकिन उनकी "टिप्पणियां" अनुभाग टेक्स्ट मुश्किल से दिखाई देता है। इसे देखें: http: //plaintextoffenders.com/about/ .. शायद यह एक पन है ?! –

121

जैसा कि ऊपर वर्णित है, यह सुरक्षा कारणों से ऐसा करने से बचने के लिए बेहतर है: अपने लक्ष्य http://plaintextoffenders.com/ पर अंत अंत में यह है, तो आप की तरह कुछ कर सकते हैं। अगर आप अभी भी पासवर्ड ताकि आप जहां मौजूदा सत्यापन में विफल से आगे बढ़ना बनाए रखना चाहते हैं, तो आप एचटीएमएल विशेषता पैरामीटर के साथ HTML सहायक का उपयोग कर सकते हैं:

 Html.PasswordFor(x => x.Password, new { value = Model.Password}) 
+0

आपके एस्वर मेरे लिए काम करता है, धन्यवाद। –

+14

यह उत्तर वास्तव में सवाल का जवाब दे रहा है! – Stian

+0

matmat आदमी है! – contactmatt

0

मैं इस workaound पाया। मुझे फॉर्म में दिखाए गए मेरे पासवर्ड की आवश्यकता है:

@model User 
@{ 
    @Html.Label(Model.Username, new { @class = "label" }) 
    @Html.TextBoxFor(Model => Model.Username, new { @class = "form-control" }) 

    @Html.Label(Model.Password, new { @class = "label" }) 
    @Html.TextBoxFor(Model => Model.Password, new { @class = "form-control make-pass" }) 
} 

<script type="text/javascript"> 
    $(".make-pass").attr("type", "password"); 
</script> 

यह मूल्य खोए बिना आपका इनपुट पासवर्ड-प्रकार बना देगा।

+0

यह अच्छा है! आप स्क्रिप्ट को अपनी 'साइट में डाल सकते हैं।जेएस 'और किसी भी पासवर्ड में इसका इस्तेमाल करें (वह मेरी आवश्यकता थी) –

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