3

我想编写一个返回站点 url 的小辅助函数。来自 PHP 和 Codeigniter,我很沮丧,因为我不能让它按照我想要的方式工作。

这是我正在尝试的:

@{
    var urlHelper = new UrlHelper(Html.ViewContext.RequestContext);
    var baseurl = urlHelper.Content("~");
}

<script>
    function base_url(url) {

        url = url || "";
        return '@baseurl' + url;
    }
</script>

我想返回我的应用程序的基本 url,这样我就可以进行 ajax 调用而不必担心路径。这是我打算如何使用它:

// Development
base_url(); // http://localhost:50024

// Production
base_url("Custom/Path"); // http://site.com/Custom/Path

我怎么能做这样的事情?

编辑

我想要绝对路径,因为我已经抽象了进行 ajax 调用的 js 对象。所以假设我有:

function MyController() {
   // ... js code
   return $resource('../MyController/:id');
}

// then
var my_ctrl = MyController();
my_ctrl.id = 1;
my_ctrl.get(); // GET: ../MyController/1

这在我的路线是时有效,http://localhost:8080/MyController/Edit但在 is 时会失败http://localhost:8080/MyController

4

3 回答 3

2

我设法这样做:

@{
    var url = Request.Url;
    var baseurl = url.GetLeftPart(UriPartial.Authority);
}

谢谢你们!

于 2012-10-09T13:06:06.337 回答
1

你知道@Url.Action("actionname")@Url.RouteUrl("routename")吗?

这两个都应该做你所描述的。

于 2012-10-08T21:46:27.587 回答
0

您可以使用构建您的 URL,而不是手动创建您的 URL。@Url.Action()

<p>@Url.Action("Index", "Home")</p>
/Home/Index

<p>@Url.Action("Edit", "Person", new { id = 1 })</p>
/Person/Edit/1

<p>@Url.Action("Search", "Book", new { title = "Gone With The Wind" })</p>
/Book/Search?title="Gone+With+The+Wind"

现在使用此选项的绝对最佳理由是@Url.Action自动应用您在 Global.asax 文件中定义的任何虚 URL 路由。像撒哈拉以南沙漠一样干燥!:)


在您的情况下,您可以通过两种方式创建“自定义路径”。

选项 A)

<p>@Url.Action("Path", "Custom")</p>
/Custom/Path

选项 B)

您可以使用 Global.asax 文件创建路由。因此,您的控制器/动作组合可以是您想要的任何东西,并且您可以创建自定义虚荣路由 url - 无论控制器/动作组合如何。

于 2012-10-08T21:52:32.203 回答