2012-09-06 36 views
9

Bir bölüme eklenip eklenemeyeceğini anlamaya çalışıyorum.ASP.NET MVC 3: Bölümlere ekleme

_Layout.cshtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 
<head> 
<link href="@Url.Content("~/Content/style.css")" rel="stylesheet" type="text/css" /> 
@RenderSection("Css", false) 
<script type="text/javascript" src="@Url.Content("~/Content/scripts/head.load.min.js")"></script> 
</head> 
<body class="bg_g"> 
    @RenderBody() 
    <script type="text/javascript"> 
     @RenderSection("Javascript", false) 
    </script> 
</body> 
</html> 

Logon.cshtml

@{ 
    Layout = "~/Views/Shared/_DMZ.cshtml"; 
    ViewBag.Title = "Logon"; 
} 

@section Javascript += { 
    // JAVASCRIPT CODE; 
} 

<div> 
    Stuff 
    @{ Html.RenderAction("Register", "Account"); } 
    @{ Html.RenderAction("Register2", "Account"); } 
</div> 

Register.cshtml

@{ 
    Layout = null; 
} 

@section Javascript += { 
    // More javascript code 
} 

<div> 
    Register stuff 
</div> 

Register2.cshtml

@{ 
    Layout = null; 
} 

@section Javascript += { 
    // Even More javascript code 
} 

<div> 
    Register stuff part 2 
</div> 
: İşte benim yapıdır

Umarım, gerçekten yapmaya çalıştığım şeyi açıklar. Aynı şeyi css bölümümde de yapmak isterim.

head.js(
    "@Url.Content("~/Content/scripts/jquery-1.6.2.min.js")", 
    "@Url.Content("~/Content/scripts/jquery.tools.min.js")", 
    "@Url.Content("~/Content/lib/jquery-validation/jquery.validate.js")", 
// Loop through all javascript files included from the sub views and add them just like above 
function() { 
    loginTabs.init(); 
    // Loop through all javascript functions that have been added to the InitFunctions section? 
} 
) 

Belki bölümler bu sorunun doğru çözüm değildir, ama bir şey başarmak için bir yol olmalı biliyorum: Ben de böyle JavaScript işlemek için alabilirsem bu daha iyi olurdu bunun gibi. Herhangi bir fikir?

cevap

0

bir geç bir giriş bit - ama orada birisiyle umarım hala yararlı: orada bunu başarmak için bir yerli bir yöntemdir ama bir süredir bu kullanıyorum ve eğer bilmiyorum

gerçekten yararlı:

public static IHtmlString Resource(this HtmlHelper HtmlHelper, Func<object, HelperResult> Template, string Type) 
{ 
    if(HtmlHelper.ViewContext.HttpContext.Items[Type] != null) ((List<Func<object, HelperResult>>)HtmlHelper.ViewContext.HttpContext.Items[Type]).Add(Template); 
    else HtmlHelper.ViewContext.HttpContext.Items[Type] = new List<Func<object, HelperResult>> { Template }; 

    return new HtmlString(String.Empty); 
} 

public static IHtmlString RenderResources(this HtmlHelper HtmlHelper, string Type) 
{ 
    if(HtmlHelper.ViewContext.HttpContext.Items[Type] == null) return new HtmlString(String.Empty); 

    var Resources = (List<Func<object, HelperResult>>)HtmlHelper.ViewContext.HttpContext.Items[Type]; 

    foreach(var Resource in Resources.Where(Resource => Resource != null)) 
    { 
     HtmlHelper.ViewContext.Writer.Write(Resource(null)); 
    } 

    return new HtmlString(String.Empty); 
} 

kullanım şöyledir:

//This is how you save it 
@Html.Resource(@<style>.test{color: #4e4e4e}</style>, "css") 

//This is how you read it 
@Html.RenderResources("css")