View Full Version : سوال: Section
aroshanzamir
پنج شنبه 04 دی 1393, 12:40 عصر
سلام
من دو تا View دارم که تو هر کدوم یه Section تعریف شده و تو فایل Layout هم RenderSection شده
مثلا در View اول Section ی با نام Scripts1
و در View دوم Section ی با Scripts2
حال مثلا اگر View اول را فراخوانی کنم میگه Sectionی با نام Scripts2 تعریف نشده و هر وقت View دوم را فراخوانی می کنم میگه
Sectionی با نام Scripts1 تعریف نشده ....
راه کار چیه ؟
mohammadreza.najafipour
پنج شنبه 04 دی 1393, 18:26 عصر
سلام دوست عزیز :لبخندساده:
یه سوال: چرا اسم Sectionهاتون رو یکی در نظر نمیگیرید؟ مثلا اسم Section در View اول Scripts باشه و همین اسم رو هم برای View دوم استفاده کنید.
با اینکار، فقط احتیاج هستش که تو Layout فقط RenderSection رو برای Scripts فراخوانی کنی و به نظرم هیچ مشکلی پیش نمیاد.
اما اگه میخوای توی View که Section رو استفاده کردی از یه PartialView هم استفاده کنی که Sectionای با همین نام داره، لینک زیر رو یه نگاهی بینداز:
http://stackoverflow.com/questions/7081009/how-to-use-razor-section-multiple-times-in-a-view-partialview-merge-without/17366455#17366455
aroshanzamir
پنج شنبه 04 دی 1393, 19:08 عصر
سلام .مرسی از اینکه وقت گذاشتی و پاسخ دادی
در صورتی که در تمام View ها یک سکشن داشته باشم عالیه ....
خوب حالا اگر در یک View دو تا Section داشتیم چکار کنیم ؟
واگر خواستیم در پارشیال ویو .. یک سکشن تعریف کنیم چکار کنیم ؟
امکانش هست یک مثال بزنی ؟
بینهایت سپاسگزارم
r4hgozar
پنج شنبه 04 دی 1393, 19:51 عصر
سلام.
من درست منظورتون رو متوجه نشدم.
اما وقتی نوشتین section script احتمالا می خواین اسکریپ های مختفی رو در ویو های مختف استفاده کنید.
خوب اینجا فقط نیازه تا در layout که استفاده می کنید بنویسین
@RenderSection("scripts", required: false)
و این رو در هر ویو که می خواین بصورت زیر فراخونی کنید مثلا من این رو در 2 ویو فراخونی می کنم بصورت زیر
@section scripts
{
<script src="~/Scripts/jquery-2.1.1.js"></script>
}
دی ویو دوم هم فراخونی می کنم اما دیگه jquery رو اضافه نمی کنم بهش و میام و مثلا ajax رو می خونم.
@section scripts
{
<script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
}
section فقط ناحیه ای رو در هر ویو اختصاص میده به شما برای اینکه بتونین style ها و یا script ها رو فراخوی کنین
مثل @RenderBody() که میاد و اجازه میده شما در ویو html ها و دستورات دیگه رو استفاده کنید.
موفق باشید
aroshanzamir
پنج شنبه 04 دی 1393, 21:02 عصر
سلام : این قسمت را دوباره بخونید
من دو تا View دارم که تو هر کدوم یه Section تعریف شده و تو فایل Layout هم RenderSection شده
مثلا در View اول Section ی با نام Scripts1
و در View دوم Section ی با Scripts2
حال مثلا اگر View اول را فراخوانی کنم میگه Sectionی با نام Scripts2 تعریف نشده و هر وقت View دوم را فراخوانی می کنم میگه
Sectionی با نام Scripts1 تعریف نشده ...
دوستمون راه حل خوبی ارائه داد گفت سکشن های که داری تعریف می کنی در هر View همه یک نام داشته باشند ... ولی مشکل اینجاست در صورتی که در یک View دو تا سکشن داشته باشیم با خطا مواجه می شویم ؟
mohammadreza.najafipour
جمعه 05 دی 1393, 12:26 عصر
سلام .مرسی از اینکه وقت گذاشتی و پاسخ دادی
در صورتی که در تمام View ها یک سکشن داشته باشم عالیه ....
خوب حالا اگر در یک View دو تا Section داشتیم چکار کنیم ؟
واگر خواستیم در پارشیال ویو .. یک سکشن تعریف کنیم چکار کنیم ؟
امکانش هست یک مثال بزنی ؟
بینهایت سپاسگزارم
خواهش می کنم.
اگه در Layout تابع RenderSetion رو بصورت زیر اجرا کنی هیچ مشکی پیش نمیاد، مثلا:
@RenderSection("mySection", required: false)
@RenderSection("yourSection", required: false)
بدلیل اینکه پارامتر دوم رو false قرار دادیم، اگه در View مورد نظر، Section وجود داشت اون رو رندر می کنه و اگه وجود نداشت رندر نمی کنه. حالا میتونی توی یک View چندین Section تعریف کنی و مشکلی پیش نمیاد.
در مورد PartialView تا جایی که میدونم(جستجو توی سایت های خارجی) همه توصیه می کنن که استفاده از Section در PartialView درست نیست. متاسفانه اطلاعات بیشتری در این مورد ندارم :لبخندساده:
ویرایش: به این تاپیک یه نگاه بینداز
http://barnamenevis.org/showthread.php?480533-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-Section-%D8%AF%D8%B1-PartialView&p=2152565&viewfull=1#post2152565
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.