4

我为我的 mvc 应用程序定义了_Layout.cshtml,如下所示:

@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脚本。该脚本实际上没有加载,因此我的表单逻辑不起作用。如果我将该HeaderContent部分从_MailForm.cshtml移动到SomePage.cshtml,则一切正常,因为 mvc 加载了脚本。

但是如何从_MailForm.cshtml文件中加载该脚本呢?

问候

4

1 回答 1

3

好的,我将在这里重写@BuildStarted写的评论,这实际上是我的问题的答案:

“这实际上是设计使然。这些部分只能填充直接父级。(...)[解决问题]最简单的方法是将所有 javascript 合并到一个文件中。这会减少页面加载带宽并通常使这对最终用户来说更好,因为他们只需要加载一次 javascript 文件......但这不是您正在寻找的解决方案。由于 SomePage.cshtml 文件具有部分页面硬编码,我会说包括您所需的脚本“

于 2010-11-02T13:01:17.120 回答