مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

mahdisky

عضویت از 1392/11/13

مشکل با partial در modal و آنگولار

  • دوشنبه 20 اردیبهشت 1395
  • 13:06
تشکر میکنم

دوتا سوال دارم تقریبا به هم نزدیک هستن:

1- راهی هست که وقتی از پارشیال استفاده میکنیم ، وقتیکه url پارشیال بصورت مستقیم صدا زده میشه به صفحه پارشیال نرود؟

مثلا فرض کنید قسمت لاگین سایت رو با پارشیال درست کردیم و به صورت modal اون رو صدا میزنیم حالا اگر آدرس مستقیم اون رو در url مرورگر وارد کنیم ، صفحه پارشیال لاگین رو نمایش میده.

 

2- وقتی از route آنگولار استفاده میکنیم ، آدرس url مرورگر تغییر میکنه .حالا وقتی صفحه رو رفرش کنیم میره صفحه پارشیال رو برامون میاره.

حالا اینم میخوام وقتی صفحه رفرش میشه همون صفحه route آنگولار رو نمایش بده.

پاسخ های این پرسش

تعداد پاسخ ها : 9 پاسخ
کاربر سایت

افشین ایمانی زاده

عضویت از 1393/12/24

  • دوشنبه 20 اردیبهشت 1395
  • 13:24

سلام 

دوست عزیز شما در View ایی که میخواهید Action رو صدا بزنید و در Action تصمیم بگیرید که چه View ایی را برگردانید

@Html.Action("ActionName","ControllerName")

و در کنترلر و در Action صدا زده شده کد زیر را درج کنید

if (User.Identity.IsAuthenticated)
                {

                    var _User = db.User.FirstOrDefault(u => u.User_UserName == User.Identity.Name);
                    return PartialView("_UserProfile", _User);
                }
                else
                {
                    return PartialView("_Login");
                }

فقط توجه داشته باشید که هر دو پارشیال را در پوشه هم نام کنترلر که در قسمت View ها قرار دارد ایجاد کنید

 

کاربر سایت

mahdisky

عضویت از 1392/11/13

  • دوشنبه 20 اردیبهشت 1395
  • 13:26

ببخشید این اصلا جواب سوال من نیست 

فک کنم سوالم رو اشتباه متوجه  شدین

کاربر سایت

mahdisky

عضویت از 1392/11/13

  • دوشنبه 20 اردیبهشت 1395
  • 13:31

برای اینکه مثال واضحی بزنم همین سایت رو مثال میزنم

شما وقتی روی ثبت نام کلیک می کنید یک modal باز میشه 

حالا اگر من مستقیم آدرس رو در url باز کنم

http://barnamenevisan.org/Account/Register

کاربر سایت

افشین ایمانی زاده

عضویت از 1393/12/24

  • دوشنبه 20 اردیبهشت 1395
  • 13:34

دوست عزیز پارشیال یک فایل فیزیکی با پسوند cshtml یا vbhtml است که وقتی صدا زده بشه لود میشه اگه میخواهید که پارشیال هنگام فراخوانی لود نشود باید در Razor برا لود شدن یا نشدن شرط بگذارید

@if (true)
{
    //کدها و تصمیمات در صورت درست بودن شرط
}
else
{
    
    //کدها و تصمیمات در صورت درست نبودن شرط
}

 

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • دوشنبه 20 اردیبهشت 1395
  • 13:41

برای سوال 1

بالای Action  از صفت [ChodActionOnly] استفاده کنید

 

کاربر سایت

افشین ایمانی زاده

عضویت از 1393/12/24

  • دوشنبه 20 اردیبهشت 1395
  • 13:43

استاد صفت [ChildActionOnly]

چه کاری رو انجام میده؟

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • دوشنبه 20 اردیبهشت 1395
  • 14:09

فقط به درخواست هایی که خود برنامه ارسال شده پاسخ میده

و باعث میشه از طریق آدرس مستقیم نشه به Action دسترسی پیدا کرد

کاربر سایت

mahdisky

عضویت از 1392/11/13

  • دوشنبه 20 اردیبهشت 1395
  • 15:36

ممنون آقای مدائنی 

این برای actionlink خوب کار میکنه 

@Html.Action("ChildAction", "Home", new { param = "first" })

اما برای modal جواب نمیده، آیا برای این هم راه حلی هست؟

و یک سوال دیگه آیا مدیریت حطایی برای این هست که وقتی به صورت مستقیم url رو وارد میکند صفحه خطای زیر رو نشون نده؟

The action '' is accessible only by a child request.

 

کاربر سایت

mahdisky

عضویت از 1392/11/13

  • دوشنبه 20 اردیبهشت 1395
  • 15:50

راه حل رو پیدا کردم

برای درخواست های ajax به صورت زیر عمل میکنیم:

[AjaxOnly]
        public ActionResult Login()
        {
            return PartialView();
        }

حالا Attribute رو میسازیم: 

public class AjaxOnlyAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            if (!filterContext.HttpContext.Request.IsAjaxRequest())
                filterContext.HttpContext.Response.Redirect("/error/404");
        }

        public override void OnActionExecuted(ActionExecutedContext filterContext)
        {

        }
    }

 

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)