asp.net-mvc - 使用 Razor 的 ASP.NET MVC 部分渲染问题

标签 asp.net-mvc asp.net-mvc-2 razor

我有 _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 ,假设从 呈现_Layout.cshtml 并加载 mail.js 脚本。脚本实际上是不是 已加载,因此我的表单逻辑无法正常工作。如果我移动那个 标题内容 部分来自 _MailForm.cshtml SomePage.cshtml ,一切正常,因为 mvc 加载了脚本。

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

问候

最佳答案

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

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

关于asp.net-mvc - 使用 Razor 的 ASP.NET MVC 部分渲染问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4051732/

相关文章:

asp.net - 将每个请求、基于 token 的身份验证添加到 asp.net mvc 站点

c# - 带 MVC 的 EF4 问题 - EntityKey、多对多关系等。我缺少什么基本事实?

asp.net-mvc - 当匹配不包含该参数的路由时,ActionLinks 恢复为查询字符串参数

c# - MVC 6 VNext 如何从不同的区域设置相同的布局

asp.net-mvc - Ajax.BeginForm 返回结果并显示适当的数据

asp.net-mvc - 路由约束到特定文件类型

asp.net-mvc - 如何处理 node.js 中的 ASP.NET 身份记录?

asp.net-mvc - 可以在没有 Controller 的情况下返回 View 吗?

asp.net-mvc-2 - 对 iframe 内的内容进行 ajax 替换时触发 iframe onload 事件

c# - ASP.NET - @ 语法和 <% %> 之间的区别?