例如,如果我有一个位于Views / Home / Index.aspx中的页面和一个位于Views / Home / Index.js中的JavaScript文件,那么如何在aspx页面上引用它?

即使编译器说路径正确,下面的示例也不起作用

<script src="Index.js" type="text/javascript"></script>

这里有更详细的相同问题: http//forums.asp.net/p/1319380/2619991.aspx

如果目前不可能,将来会是这样吗? 如果没有,每个人如何管理大型Asp.net MVC项目的javascript资源? 您是否只在Content文件夹中创建了一个镜像View文件夹结构的文件夹结构? YUCK!

===============>>#1 票数:3

您可以使用如下的VirtualPathUtility.ToAbsolute方法将.js文件的应用程序相对URL转换为可以写入页面的绝对URL:

<script type="text/javascript" src="<%=VirtualPathUtility.ToAbsolute("~/Views/Home/Index.js") %>"></script>

===============>>#2 票数:1

您应该为脚本分隔文件夹结构。 例如应用程序根目录下的JavaScript文件夹。 使用视图存储js文件不仅会影响路径解决问题,还会影响安全性和权限。 此外,如果您将JS文件作为程序集资源嵌入,如果您将来将它们存储在专用子文件夹中时将决定单独部署某些应用程序部件,则会更容易。

===============>>#3 票数:1 已采纳

对于使用Content文件夹的共享javascript资源是有意义的。 问题是我特意试图解决的是aspx页面特定的javascript,永远不会被重用。

我想我要做的就是将aspx页面特定的javascript直接放到页面本身上,并将共享的js资源保存在Content文件夹中。

===============>>#4 票数:1

这是HtmlHelper的一个很好的扩展方法:

public static class JavaScriptExtensions
{
    public static string JavaScript(this HtmlHelper html, string source)
    {
        TagBuilder tagBuilder = new TagBuilder("script");
        tagBuilder.Attributes.Add("type", "text/javascript");
        tagBuilder.Attributes.Add("src", VirtualPathUtility.ToAbsolute(source));
        return tagBuilder.ToString(TagRenderMode.Normal);
    }
}

像这样使用它:

<%=Html.JavaScript("~/Content/MicrosoftAjax.js")%>

===============>>#5 票数:0

如果将页面重新路由到自定义RouteHandler,则可以在将RequestContext处理到MvcHandler类之前检查文件是否存在。

示例(未完成):

public class RouteHandler : IRouteHandler
{
    public IHttpHandler 
    GetHttpHandler(RequestContext requestContext)
    {
        var request = requestContext.HttpContext.Request;

        // Here you should probably make the 'Views' directory appear in the correct place.
        var path = request.MapPath(request.Path); 
        if(File.Exists(path)) {
            // This is internal, you probably should make your own version.
            return new StaticFileHandler(requestContext);
        }
        else {
            return new MvcHandler(requestContext);
        }
    }
}

  ask by Vyrotek translate from so

未解决问题?本站智能推荐:

3回复

ASP.NET MVC保存到客户端上的特定文件夹

我需要在MVC应用程序上执行这些操作: 用户从网格中选择文件 该文件需要保存在共享文件夹中 用户使用Excel修改文件 该文件保存在同一共享文件夹中 服务器deamon将处理该文件 我的主要问题(我不知道我是否可以使用它)是提示用户建议将文件保存
1回复

无法在Content&Script文件夹中获取任何文件以在VS中的C#ASP.NET MVC应用程序中加载

这里有一些问题,一个Web应用程序被检入代码存储库。 基本上,此应用程序特别不会显示任何图像,.js或.css,它们都位于Content&Script文件夹中。 运行时只显示原始HTML。 这是在从我们的代码存储库中重新获取并通过Visual Studio在本地运行之后发生的。 在运
1回复

在ASP.NET MVC应用程序中引用Javascript文件中的路径的正确方法

目前,我在js文件中正在执行的操作是这样的(并且有效): 但是问题是,如果有人键入www.mydomain.com而不是mydomain.com,则找不到该路径。 我尝试按照本文中的建议进行操作: Javascript文件中的相对图像URL-ASP.net MVC和IIS 7 ,即将r
1回复

Asp.Net Mvc4:如何在js文件中使用@字符[复制]

这个问题在这里已有答案: 是否可以在Javascript文件中使用剃刀语法? 3个答案 我有一个名为myfile.js的js文件 它的内容如下: 我在BundleConfig.cs创建了一个包: 之后,我将其包括在内以查看“@section S
1回复

如何在Asp.net MVC中向本地js文件添加本地化?

我几乎陷入困境,因为我无法弄清楚如何在.js文件中“调用”资源文件。 我有一个登录视图,在此视图上,我调用MVC render方法来生成脚本标签。 在我的Login.js中,我有一个变量: 应该转换为“是”或“ Ja”,还是其他取决于设置的CultureInfo。 如果我将脚
2回复

为什么Viewbag无法显示在asp.net MVC视图页面中?

我是asp.net mvc的新手,请编写以下Java脚本代码以从控制器中获取任何数据: 并在控制器中编写以下操作: 在视图页面中编写以下代码: 当我运行项目<h1> Hello Dear @ViewBag.Myfamily</h1>不显示给我,但我
2回复

如果文件存在于ASP.NET MVC中的文件夹和数据库中的文件名中,则在“编辑”中显示带有fileUpload的FileName

在“编辑”上,如何将文件名(以字符串形式存储在SQL数据库中)分配给文件上传控件。 调节器 我已经将文件保存在一个文件夹中,并将其filename(fName)在SQL数据库中作为字符串。 我正在尝试做的是,检查数据库中是否存在filename(fName) ,如果存在,请将其分
1回复

使用ASP.NET MVC表单中的数据生成xml文件

我之前有一个表单,它输入了关于Relation title和FirstName,LastName of 2 people的输入。 输入信息并单击“提交”后,生成了一个xml,如下所示: 模型 - FormModel.cs XmlModel.cs View.cshtml强
1回复

如何缓存在IIS上服务的ASP.NET MVC应用程序的js和css文件?

在我们的IIS Server 7.5 ,有几个ASP.NET MVC应用程序,为了提高性能,我们想缓存静态内容( javascript , css等)。 我在Microsoft IIS和ASP.NET MVC缓存技术上看过了静态内容缓存,但不确定是否能满足我的要求。 因此,使IIS Serv
3回复

ASP.Net MVC3:将.js文件放在View而不是Scripts文件夹附近

我们想从我们的Razor视图中分离出javascript(所以我们可以测试)。 我们可以在它们对应的视图附近找到.js文件,而不是在Scripts文件夹中吗? 例如,我们希望在解决方案资源管理器中看到这一点: 但是,我不知道从.cshtml视图引用.js文件。