如何在MVC / ASP.NET中以编程方式向节添加内容?

时间:2014-10-15 18:32:40

标签: c# asp.net asp.net-mvc razor asp.net-mvc-5

在我的每个视图中,我不断添加与视图关联的样式和脚本。它是我们介绍的应用程序中的约定,但我们希望自动应用此约定。

目前我们的观点如下:

<p>This is the view!</p>

@section styles {
    <link rel="stylesheet" href="~/Views/Home/Index.css" />
}

@section scripts {
    <script src="~/Views/Home/Index.js"></script>
}

有没有办法自动添加样式和脚本?也许在控制器的基类中,例如:

public class BaseController : Controller
{
    string controller = RouteData.Values["controller"].ToString();
    string action = RouteData.Values["action"].ToString();
    string script = string.Format("<script src=\"~/Views/{0}/{1}.js\"></script>", controller, action);
    string style = string.Format("<link rel=\"stylesheet\" href=\"~/Views/{0}/{1}.css\" />", controller, action); 

    // Todo: How to add script and style to sections programmatically???
}

1 个答案:

答案 0 :(得分:2)

您可以在视图中使用控制器/操作名称值,特别是在布局中。只需编辑您的布局并在头部添加:

<link rel="stylesheet" href="~/Views/@(ViewContext.RouteData.Values["controller"])/@(ViewContext.RouteData.Values["action"]).css" />

在结束身体标记之前,添加:

<script src="~/Views/@(ViewContext.RouteData.Values["controller"])/@(ViewContext.RouteData.Values["action"]).js"></script>