使用onchange的MVC4和下拉列表

时间:2016-02-22 19:03:57

标签: 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)

我遇到的问题是,当我尝试使用下拉列表时,我遇到了正确的问题。问题是当我使用以下代码填充我的下拉列表时:

 @Html.DropDownList("Owners", ViewData["Owners"] as SelectList, new { onchange = "document.location.href='/Builds/' + this.options[this.selectedIndex].value;" })

它处理事件就好了,但产生了一个URL: http://dev.com/Builds/value。我需要它http://dev.com/myusername/application/Builds/value

关于如何实现这一目标的任何想法?

1 个答案:

答案 0 :(得分:0)

获取基础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/")