2012-09-06 13 views
9

セクションに追加することができるかどうかを判断しようとしています。ここに私の構造は次のとおりです。ASP.NET MVC 3:セクションに追加

_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> 

私が実際にやろうとしていることを説明してくれることを願っています。私はまた、私のCSSセクションで同じことをしたいと思います。

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? 
} 
) 

たぶんセクションでは、この問題の正しい解決策ではありませんが、私は何かを達成するための方法がなければならないことを知っている:私もそれはこのようJavascriptをレンダリングするために取得することができればそれも良いだろうこのような。何か案は?

答えて

0

後半エントリのビット - しかし、そこに誰かにうまくいけば、まだ便利:

それを達成するためのネイティブメソッドがあるかどうかはわからないが、私は今、いくつかの時間のためにこれを使用していると、それはです本当に便利:

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); 
} 

使用方法は次のとおりです。

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

//This is how you read it 
@Html.RenderResources("css") 
関連する問題