PDA

View Full Version : share کردن داده بین اکشن های یک کنترلر



resident
یک شنبه 11 مرداد 1394, 19:16 عصر
من یه کنترلر دارم که برای فاکتورها و پیش فاکتورها از اون استفاده می کنم.
یه متغیری هم دارم به نام invoiceType که مشخص می کنه من اطلاعات فاکتور رو میخوام یا پیش فاکتور.
میخوام بدونم چکار میشه کرد که invoiceType بین همه ی اکشن های ای کنترلر share بشه؟ از Tempdataنمیشه استفاده کرد چون از یه اکشن به اکشن بعدی Redirectنمی کنم. اکشن ها از هم جدا هستن...

salar IT man
یک شنبه 11 مرداد 1394, 19:34 عصر
من یه کنترلر دارم که برای فاکتورها و پیش فاکتورها از اون استفاده می کنم.
یه متغیری هم دارم به نام invoiceType که مشخص می کنه من اطلاعات فاکتور رو میخوام یا پیش فاکتور.
میخوام بدونم چکار میشه کرد که invoiceType بین همه ی اکشن های ای کنترلر share بشه؟ از Tempdataنمیشه استفاده کرد چون از یه اکشن به اکشن بعدی Redirectنمی کنم. اکشن ها از هم جدا هستن...

دلیل این شکل عمل کردن شما رو نمیدانم .کمی هم گنگ بود توضیحات شما. در کل TempData ما بین Redirect ها توانایی این رو دارد که دیتا را نگه دارد و ای به معنی محدودیت نیست.
سناریو را بهتر بود واضح توضیح دهید تابیشتر بشه کمک کرد. اینجا رو هم نگاه کنید . تفاوت TempData-ViewBag-Session-ViewData (http://www.dotnet-tricks.com/Tutorial/mvc/9KHW190712-ViewData-vs-ViewBag-vs-TempData-vs-Session.html)

resident
یک شنبه 11 مرداد 1394, 20:28 عصر
دلیل این شکل عمل کردن شما رو نمیدانم .کمی هم گنگ بود توضیحات شما. در کل TempData ما بین Redirect ها توانایی این رو دارد که دیتا را نگه دارد و ای به معنی محدودیت نیست.
سناریو را بهتر بود واضح توضیح دهید تابیشتر بشه کمک کرد. اینجا رو هم نگاه کنید . تفاوت TempData-ViewBag-Session-ViewData (http://www.dotnet-tricks.com/Tutorial/mvc/9KHW190712-ViewData-vs-ViewBag-vs-TempData-vs-Session.html)

مرسی از وفتی که گذاشتین.
ببینید من یه کنترلر دارم به نام xx
تو این کنترلر 2 تا اکشن دارم به نام Index , Create

public ActionResult Index(int invoiceType)
{
}

public ActionResult Create()
{
}

وقتی اکشن Index صدا زده میشه invoiceType بهش پاس داده میشه و مشکلی نیست.

اما وقتی Create صدا زده میشه ، میخوام به invoiceType دسترسی داشته باشم. میدونم که میشه به عنوان پارامتر ورودی به اکشن Create پاسش بدم اما به دلیلی نمیخوام این کار رو کنم.

امیدوارم واضح بیان کرد باشم...

salar IT man
یک شنبه 11 مرداد 1394, 20:48 عصر
راه حل برای همچین کاری استفاده از TempData هستش. در اکشن Index آن را مقداری دهی کنید که در آن صورت هنگام صدا زدن اکشن Create میتوانید بهش دسترسی داشته باشید. البته بسته بکاری که میکنید حتما دلیل قانع کنند ه ای برا همچین کاری دارید. ولی اگر احیانا Session رو غیر فعال کرده باشید ، TempData از کار خواهد افتاد . در آن صورت هم لازم است از یک کوکی Provider برای TempData استفاده کنید البته با رمزگذاری.
موفق باشید.

resident
یک شنبه 11 مرداد 1394, 21:10 عصر
راه حل برای همچین کاری استفاده از TempData هستش. در اکشن Index آن را مقداری دهی کنید که در آن صورت هنگام صدا زدن اکشن Create میتوانید بهش دسترسی داشته باشید. البته بسته بکاری که میکنید حتما دلیل قانع کنند ه ای برا همچین کاری دارید. ولی اگر احیانا Session رو غیر فعال کرده باشید ، TempData از کار خواهد افتاد . در آن صورت هم لازم است از یک کوکی Provider برای TempData استفاده کنید البته با رمزگذاری.
موفق باشید.

میدونید چه مشکلی در استفاده از TempDataپیش میاد؟
مشکل اینجاست که اگه دو صفحه رو همزمان بازکنم و مثلا تو اولی TempData["invoiceType"]=1باشه و در دومی TempData["invoiceType"]=2 باشه، وقتی به صفحه اول بر می گردم TempData["invoiceType"] مقدارش 2 شده. یعنی مقدار TempData["invoiceType"]در همه صفحات باز شده مساوی آخرین مقدار اختصاص داده شده به TempDataمیشه.

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

salar IT man
دوشنبه 12 مرداد 1394, 01:33 صبح
میدونید چه مشکلی در استفاده از TempDataپیش میاد؟
مشکل اینجاست که اگه دو صفحه رو همزمان بازکنم و مثلا تو اولی TempData["invoiceType"]=1باشه و در دومی TempData["invoiceType"]=2 باشه، وقتی به صفحه اول بر می گردم TempData["invoiceType"] مقدارش 2 شده. یعنی مقدار TempData["invoiceType"]در همه صفحات باز شده مساوی آخرین مقدار اختصاص داده شده به TempDataمیشه.

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

حتما باید اینچنین باشد چون از Session استفاده میشه و اینکه بعد از خواند مقدار آن ، از بین خواهد رفت و اگر بازنویسی کنید با همان کلید قبل قطعا overwrite خواهد شد . TempData یا سایر مواردی که در لینگ پست قبل اشاره شده است، برای هر page منحصر به فرد نیستند که طول عمری دارند و مطمئن هستم در تصویری که بود در آن سایت مشخص است همه چیز.http://www.dotnettips.info/post/807/asp-net-mvc-5
یه جورایی سناریوی خود رو بهبود ببخشید

resident
دوشنبه 12 مرداد 1394, 08:23 صبح
حتما باید اینچنین باشد چون از Session استفاده میشه و اینکه بعد از خواند مقدار آن ، از بین خواهد رفت و اگر بازنویسی کنید با همان کلید قبل قطعا overwrite خواهد شد . TempData یا سایر مواردی که در لینگ پست قبل اشاره شده است، برای هر page منحصر به فرد نیستند که طول عمری دارند و مطمئن هستم در تصویری که بود در آن سایت مشخص است همه چیز.http://www.dotnettips.info/post/807/asp-net-mvc-5
یه جورایی سناریوی خود رو بهبود ببخشید

مرسی از وقتی که گذاشتید
به نظر شما چکار باید کرد؟ راه حلی داره؟
تو لینکی که گذاشته بودید مطلبی که مناسب کار من باشه ندیدم