Beriz
Beriz

Reputation: 356

Problem with Url.Content in ASP.NET MVC on Default Route

If I use the following line in my default view /Home/Index

<script language="javascript" src="<%=Url.Content("~/Scripts/jquery-1.3.2.js")%>" type="text/javascript" ></script>

If I surf to this location using the following url http://127.0.0.1:9999/Home/Index the page gets rendered correctly

<script language="javascript" src="/Scripts/jquery-1.3.2.js" type="text/javascript" ></script>

If I use the following url http://127.0.0.1:9999/ (default wired to Home/Index) the page renders this:

<script language="javascript" src="//Scripts/jquery-1.3.2.js" type="text/javascript" ></script>

Does anyone has any idea how to solve this issue?

EDIT:

FYI: I'm using ASP.NET mvc 2 RC And this is my route configuration:

routes.MapRoute(
 "Default",                                              // Route name
 "{controller}/{action}/{id}",                           // URL with parameters
 new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
);

Upvotes: 13

Views: 1952

Answers (4)

Parv Sharma
Parv Sharma

Reputation: 12705

Why are you keeping your id as an empty string? I think this may be causing the problem. You may find better results by trying the following:

routes.MapRoute(
 "Default",                                              // Route name
 "{controller}/{action}/{id}",                           // URL with parameters
 new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
);

to this

routes.MapRoute(
 "Default",                                              // Route name
 "{controller}/{action}/{id}",                           // URL with parameters
 new { controller = "Home", action = "Index", UrlParameter.Optional }  // Parameter defaults
);

Upvotes: 0

Suhani Mody
Suhani Mody

Reputation: 691

Well, alternatively you can do the following:

create a key in appSettings section of web.config file.

<add key="DomainName" value="http://http://127.0.0.1:9999/" />

Now, whenever you want to assign "src" value of any image, javascript of css file, you can use this key. it will be define a root for you and after that you can define at what path you have placed your file. i.e. in your case:

<script language="javascript" src="<%=System.Configuration.ConfigurationManager.AppSettings["DomainName"] %>Scripts/jquery-1.3.2.js" type="text/javascript" ></script>

Upvotes: 0

Natalya
Natalya

Reputation: 278

If you use IIS6 or WinXP Cassini you should register one more route:

if (Environment.OSVersion.Version.Major < 6) // IIS6 and WinXP Cassini
        {
            routes.MapRoute(
                "Root",
                "",
                new
                    {
                        controller = "Home",
                        action = "Index",
                        id = UrlParameter.Optional
                    }
                );
        }

Upvotes: 1

Maslow
Maslow

Reputation: 18746

I had a very similar problem with Asp.net using Request.ApplicationPath... and wrapped it as follows

    public string AppRoot()
    {
        var appPath = Request.ApplicationPath;
        if (appPath.EndsWith("/"))
            return appPath;
        else
            return appPath + "/";

    }

Upvotes: 0

Related Questions