Javascript MVC4和使用onchange的下拉列表

Javascript MVC4和使用onchange的下拉列表,javascript,jquery,asp.net-mvc-4,Javascript,Jquery,Asp.net Mvc 4,我已经搜索了好几篇关于这个的帖子,所有的方法都正常工作,但是。。。 我所处的环境中,我们使用3个不同的服务器(Dev、UAT和Prod)。所有3个都有不同的URL结构: http://dev.com/myusername/applicationname (Dev) http://uat.com/applicationname (UAT) http://prod.com/applicationname (Prod) 我遇到的问题是,当我尝试使用下拉菜单时,我在获取正确的url时遇到了问题。问题是

我已经搜索了好几篇关于这个的帖子,所有的方法都正常工作,但是。。。 我所处的环境中,我们使用3个不同的服务器(Dev、UAT和Prod)。所有3个都有不同的URL结构:

http://dev.com/myusername/applicationname (Dev)
http://uat.com/applicationname (UAT)
http://prod.com/applicationname (Prod)
我遇到的问题是,当我尝试使用下拉菜单时,我在获取正确的url时遇到了问题。问题是当我使用以下代码填充下拉列表时:

 @Html.DropDownList("Owners", ViewData["Owners"] as SelectList, new { onchange = "document.location.href='/Builds/' + this.options[this.selectedIndex].value;" })
它可以很好地处理事件,但会生成以下URL: . 我需要它


关于如何实现这一点,您有什么想法吗?

获取基本uri,然后将您的内容附加到其中:

 string baseUrl = Request.Url.Scheme + "://" + Request.Url.Authority + 
    Request.ApplicationPath.TrimEnd('/') + "/";
请注意,修剪之所以存在,是因为它可能以尾部斜杠结束,也可能不以尾部斜杠结束,这取决于它所在的位置(根目录或子目录)

您也可以使用

HttpContext.Current.Server.MapPath("~/Builds/")
这也可能起作用:

@HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority)@Url.Content("~/Builds/")

将baseUrl放入控制器并将其添加到列表项中,效果非常好!谢谢