2010-10-29 111 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