从ServiceStack支持的SPA构造AJAX url值

时间:2014-01-16 17:47:20

标签: servicestack

我有一个ASP.NET MVC 4应用程序,它作为我的ServiceStack AppHost的主机。一切都在开发中工作正常,但在我的第一次测试部署中,我意识到我忽略了在我的环境(开发/测试/登台/部署)之间处理我的AJAX URL值的差异。我的应用程序实际上只是一个基于Knockout的SPA,可以调用ServiceStack,所以MVC只提供托管。

所以我的javascript有这个:

        self.DoSomething = function (event) {
            // here is my problem.  the service url is  
            // specific to the current environment             
            var service_url = '/api/some_method';
            $.ajax({
                url: service_url,
                dataType: 'json',
                type: 'POST',
                success: function (data) {
                  // do something
                }
            })
        };

在一个'正常'的ASP.NET MVC应用程序中,我正在调用控制器操作,我会这样做:

var service_url = '@Url.Action("MyControllerAction", "MyController")'

到目前为止,我所拥有的最佳解决方案是:

var service_url = '@Url.Content("~")api/some_method';

它工作正常,但它看起来比我想象的单行代码更丑。在AJAX调用开始失败之前,它看起来就像是在没有注意的情况下搞砸了......

我倾向于把它包装成一个js帮助文件,可以从任何类似的页面引用,但是ras引擎无法解析js帮助器。

有没有人知道是否有'最佳实践'的方法来做到这一点?

0 个答案:

没有答案