2010-10-29 142 views
4

ASP.NET MVC部分呈現的問題,我有_Layout.cshtml我的MVC應用程序,這是如下定義:使用剃刀

@inherits System.Web.Mvc.WebViewPage 
@using Webdiyer.WebControls.Mvc; 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    @RenderSection("HeaderContent", false) 
</head> 

<body> 
    @RenderBody() 
</body> 
</html> 

在頁面SomePage.cshtml,我已經包括了佈局,也包括部分呈現建築,因爲我希望我_MailForm.cshtml此頁面上呈現:

@{ 
    View.Title = "page"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

@Html.Partial("_MailForm") 

我的_MailForm.cshtml文件看起來如下:

@inherits System.Web.Mvc.WebViewPage<CMS.Models.Mail.MailModel> 

@section HeaderContent 
{ 
    <script src="@Url.Content("~/Scripts/mail.js")" type="text/javascript"></script> 
} 

<form>...</form> 

_MailForm.cshtml聲明的HeaderContent部分,假設從_Layout.cshtml和負載在mail.js腳本渲染。該腳本實際上是而不是加載,因爲我的表單邏輯不起作用。如果我將標題內容部分從_MailForm.cshtml改爲SomePage.cshtml,一切正常,因爲mvc加載腳本。

但如何從_MailForm.cshtml文件中加載該腳本?

問候

+0

這實際上是通過設計,這些部分只能填充直接的父母......我也遇到了同樣的問題, – Buildstarted 2010-10-29 22:14:02

+0

是否有任何解決方法那麼,或者一些不同的方法來解決這個問題?移動該部分以指導其父母的父母是唯一的解決方案? – jwaliszko 2010-10-30 09:44:39

+0

那麼,最簡​​單的方法是將所有的JavaScript合併成一個文件,這將減少頁面加載帶寬和通常使最終用戶更好,因爲他們只需要加載一次JavaScript文件一次...但是這不是您要查找的解決方案。由於'SomePage.cshtml'文件具有硬編碼的部分頁面,我會說包括您在該頁面中所需的腳本現在可以正常使用,並且可以將腳本放在body標籤中。 – Buildstarted 2010-11-01 17:20:55

回答

3

好吧,我會在這裏改寫由寫評論@BuildStarted,這實際上是回答我的問題:

「這實際上是由設計段只能填充(...)解決問題的最簡單方法是將所有的JavaScript合併到一個文件中,這會減少頁面加載帶寬,並且通常會使最終用戶更好,因爲他們必須加載JavaScript文件只有一次...但是,這不是你要找的解決方案。由於SomePage.cshtml文件的部分頁面是硬編碼的,我可以ld說,包括你所需的腳本在該頁面現在可以。 「

+2

但是,JavaScript的相關風格或樣式表怎麼樣?,一些JavaScript插件(如jquery ui stuff,dropdownmenus等)緊緊地綁定到不能直接放入主體的CSS和樣式。 – 2011-01-25 07:26:51

+0

此外,在大多數情況下,您根本不能從局部視角進入身體。任何解決方案 – Shimmy 2012-11-13 06:42:25