سؤال

أحاول الحصول على هذا http://blog.stevehorn.cc/2009/06/rendering-modal-dialog-with-aspnet-mvc.html للعمل مع MVC 3.

أنا جديد تمامًا في ASP.Net MVC، وبدأت مشروع MVC 3 مؤخرًا.أريد عرض نموذج تسجيل دخول مشروط عندما ينقر المستخدم على الارتباط التشعبي لتسجيل الدخول في ملف _Layout.cshtml الخاص بي:

<a href="#" id="LogIn">Log In</a>

لقد قمت بإنشاء طريقة عرض تسجيل الدخول في الموقع التالي Areas/Auth/Views/Auth/Login.cshtml

لقد أضفت البرنامج النصي التالي إلى ملف _Layout.cshtml الخاص بي:

    <script type="text/javascript">
        $(document).ready(function () 
        {
            $("#LogIn").click(function (event) 
            {
                $.get( 
                      "~/Areas/Auth/Views/Auth/Login" ,
                      function (htmlResult) 
                      {
                        $("#LoginModal").remove(); //In case this is the second time they've requested the dialog.
                        $("#container").append(htmlResult);
                        $("#LoginModal").dialog();
                      }
                    );
            return false; //To keep the default behavior of the anchor tag from occuring.
});                
</script>

وأضفت PartialViewResult إلى AuthController الخاص بي:

        public PartialViewResult LoginView()
    {
        return PartialView("Login");
    }

ومع ذلك، لا يحدث شيء عند النقر على رابط تسجيل الدخول.سيكون موضع تقدير أي نصيحة أو روابط لبرنامج تعليمي جيد عن MVC 3 حول القيام بذلك.

شكرًا!

هل كانت مفيدة؟

المحلول

معرف الموارد المنتظم (URI) الخاص بك خاطئ:

"~/Areas/Auth/Views/Auth/Login"

وهذا إشارة إلى وجهة نظر، وليس إلى إجراء.يحتاج URI الخاص بك إلى الإشارة إلى إجراء ما.وأيضًا، لن تتمكن JavaScript من فهم ASP.NET ~ بناء الجملة.ربما تريد شيئا من هذا القبيل <%: Url.Content("~/Auth/Auth/LoginView") %> بدلاً من.

في المستقبل، هناك طريقة جيدة لتصحيح هذه الأشياء وهي لوحة Firebug's net أو Fiddler.من المفترض أن تشاهد مكالمة AJAX تُرجع الرقم 404.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top