PDA

View Full Version : سوال: استفاده از Section در PartialView



ali-akbarian
پنج شنبه 04 دی 1393, 11:35 صبح
سلام دوستان من یه Partial View دارم که تو این Partilal View یک Section تعریف شده در زمان اجرا میگه چنین سکشنی تعریف نشده در Master Page هم اعلام کردم
RenderSection

هر کاری می کنم جواب نمی گیرم توی StackOverFlow هم یه سری مطلب دیدم ولی نتونستم چیزی درست ازش بفهمم
مثل این لینک (http://stackoverflow.com/questions/17876538/asp-mvc-define-section-in-partial-view)

اگر راهنمایی کنید ممنون میشم

mohammadreza.najafipour
جمعه 05 دی 1393, 12:37 عصر
سلام دوست عزیز :لبخندساده:
از لحاظ طراحی، View مسئول Section هستش و نباید در PartialView از Section استفاده کنید. البته راه حل هایی هم هست مثل این(تست نکردم خودم):

http://www.codeproject.com/Articles/698246/ASP-NET-MVC-Special-Views-Partial-View-and-Layout (http://www.codeproject.com/Articles/698246/ASP-NET-MVC-Special-Views-Partial-View-and-Layout)

پایین صفحه در مورد این قضیه توضیح داده شده

meisam12
جمعه 12 دی 1393, 23:10 عصر
سلام دوستان من یه Partial View دارم که تو این Partilal View یک Section تعریف شده در زمان اجرا میگه چنین سکشنی تعریف نشده در Master Page هم اعلام کردم
RenderSection

هر کاری می کنم جواب نمی گیرم توی StackOverFlow هم یه سری مطلب دیدم ولی نتونستم چیزی درست ازش بفهمم
مثل این لینک (http://stackoverflow.com/questions/17876538/asp-mvc-define-section-in-partial-view)

اگر راهنمایی کنید ممنون میشم

در viewای که از این partialview استفاده کردی باید مانند Master، سکشن را هم بگذاری

aroshanzamir
جمعه 12 دی 1393, 23:45 عصر
در viewای که از این partialview استفاده کردی باید مانند Master، سکشن را هم بگذاری


سلام .. مساله اینه که نمی تونیم تو پارشیال سکشن تعریف کنیم که حالا بخواهیم تو ویو یا Master اونو فراخوانی کنیم ؟
شما این کار را امتحان کردید ؟

meisam12
شنبه 13 دی 1393, 19:53 عصر
در PartialView نمی توان Section تعریف کرد و در View سکشن مورد نظر را Render کرد. پس باید خودمان برای تحقق این مساله یک helper سفارشی بنویسیم. یک کلاس static مثلاً به نام Helper ایجاد کنید و دو متد extenstion در آن می نویسیم. یکی جهت پاس دادن html در partialview و دیگری جهت ترجمه آن در View یا قرار دادن html مورد نظر در view


namespace Test.UI.Helper
{
public static class HelperExtension
{
public static MvcHtmlString PartialSection(this HtmlHelper htmlHelper, Func<object, HelperResult> template)
{
htmlHelper.ViewContext.HttpContext.Items["_PartialSection_" + Guid.NewGuid()] = template;
return MvcHtmlString.Empty;
}

public static IHtmlString RenderPartialSection(this HtmlHelper htmlHelper)
{
foreach (object key in htmlHelper.ViewContext.HttpContext.Items.Keys)
{
if (key.ToString().StartsWith("_PartialSection_"))
{
var template = htmlHelper.ViewContext.HttpContext.Items[key] as Func<object, HelperResult>;
if (template != null)
{
htmlHelper.ViewContext.Writer.Write(template(null) );
}
}
}

return MvcHtmlString.Empty;
}
}
}


//In PartialView
@{
Layout=null;
}

@Html.PartialSection(@<text>
<a href="/">Home</a>
</text>)

//In View

@ section BreadCrumb
{
@Html.RenderPartialSection()
}

//In Layout
@RenderSection("BreadCrumb")

meisam12
شنبه 13 دی 1393, 20:02 عصر
این هم مثال عملیش