@ Html.TextBoxFor () संबंधित संपत्ति के मूल्य होने पर खाली टेक्स्टबॉक्स उत्पन्न करता है

मैंने एक डिफ़ॉल्ट एएसपी.नेट एमवीसी 5 प्रोजेक्ट बनाया है।

मैंने उपयोगकर्ता को एक पूर्ण नाम संपत्ति जोड़ा है:

public class ApplicationUser : IdentityUser
{
    public string FullName { get; set; }
}

इस संपत्ति को व्यूमोडेल में भी जोड़ा गया है:

public class ManageUserViewModel
{
    [Display(Name = "Name")]
    public string FullName { get; set; }

    ...
}

और एक दृश्य पर एक टेक्स्टबॉक्स प्रदर्शित करें:

@Html.TextBoxFor(m => m.FullName)

यह अच्छी तरह से काम करता है, मैं उपयोगकर्ता का पूर्ण नाम सेट कर सकता हूं। मेरे पास केवल एक समस्या है: यदि उपयोगकर्ता के पास पहले से पूर्णनाम सेट है, तो टेक्स्टबॉक्स अभी भी खाली है। मैं इसे पूर्णनाम संपत्ति के वास्तविक मूल्य के लिए कैसे बना सकता हूं?

संपादित करें:

यह नियंत्रक है जो टेक्स्टबॉक्स के साथ दृश्य प्रदर्शित करता है:

    public ActionResult Manage(ManageMessageId? message)
    {
        ViewBag.StatusMessage =
            message == ManageMessageId.ChangePasswordSuccess ? "Your password has been changed."
            : message == ManageMessageId.ChangeDetailsSuccess ? "Your details have been changed."
            : message == ManageMessageId.SetPasswordSuccess ? "Your password has been set."
            : message == ManageMessageId.RemoveLoginSuccess ? "The external login was removed."
            : message == ManageMessageId.Error ? "An error has occurred."
            : "";
        ViewBag.HasLocalPassword = HasPassword();
        ViewBag.ReturnUrl = Url.Action("Manage");
        return View();
    }
0
जोड़ा संपादित
विचारों: 2
.cshtml में ब्रेकपॉइंट सेट करें और मॉडल की पूर्ण नाम संपत्ति की जांच करें
जोड़ा लेखक Florian R., स्रोत
बस DirectInput-Window का उपयोग करें और मॉडल टाइप करें। FullName
जोड़ा लेखक Florian R., स्रोत
@ जेएलई: मुझे डर है कि मैं नहीं करता हूं। मैं उसे कैसे कर सकता हूँ? मैंने नियंत्रक विधि को जोड़ा है जो उस दृश्य को वापस करता है जिसमें टेक्स्टबॉक्स है।
जोड़ा लेखक Adam Szabo, स्रोत
@thefiloe: ब्रेकपॉइंट सेट करने के बाद, cshtml डीबग करते समय मैं मॉडल को कैसे एक्सेस कर सकता हूं?
जोड़ा लेखक Adam Szabo, स्रोत
क्या आप दृश्य लौटने पर नियंत्रक में इसे ठीक से मानचित्र बनाते हैं? आपको ApplicationUser से FullName को पकड़ना होगा और इसे दृश्य मॉडल में रखना होगा।
जोड़ा लेखक JLe, स्रोत

1 उत्तर

public ActionResult Manage(ManageMessageId? message)
{
    ViewBag.StatusMessage =
        message == ManageMessageId.ChangePasswordSuccess ? "Your password has been changed."
        : message == ManageMessageId.ChangeDetailsSuccess ? "Your details have been changed."
        : message == ManageMessageId.SetPasswordSuccess ? "Your password has been set."
        : message == ManageMessageId.RemoveLoginSuccess ? "The external login was removed."
        : message == ManageMessageId.Error ? "An error has occurred."
        : "";
    ViewBag.HasLocalPassword = HasPassword();
    ViewBag.ReturnUrl = Url.Action("Manage");

   //Get the currently logged on user
    var user = UserManager.FindById(User.Identity.GetUserId());

   //Copy the value of FullName to the view model
    var vm = new ManageUserViewModel {
        FullName = user.FullName
    };
    return View(vm);
}
0
जोड़ा