跳过所有Umbraco魔法的单一方法

时间:2014-01-23 13:42:00

标签: c# asp.net-mvc umbraco

我刚刚被分配在使用Umbraco的项目中实现一个功能。我的工作是基本生成特定的XML并将其返回给用户。但是,我无法让它工作,因为当我创建新的控制器(我已经尝试创建

Controller, RenderMvcController and SurfaceController

)及其中的方法(如果我只是在现有控制器中创建新方法),我在浏览器中输入url后得到错误404。示例:我在其中创建 TestController 和方法索引。我已经尝试过TestController派生自RenderMvcController或SurfaceController或者只是Controller的组合。编译后等,当我运行

http://my_address/Test 

http://my_address/Test/Index

我从umbraco得到404错误。我查看了umbraco中已经在项目中的其他页面,并且它们都在umbraco Web面板中以某种方式配置:

http://my_address/umbraco

我也尝试为存在控制器添加新方法,但没有运气(再次404错误)。我从未与umbraco合作,我不知道如何配置它。我只想知道是否有任何方法可以创建可在以下位置访问的方法:

http://my_address/MyMethod

http://my_address/MyController/MyMethod

并且会在现有的Umbraco项目中完全返回我将编程的内容(没有任何视图,部分视图等 - 我可以手动设置Headers和ContentType,我的内容是纯文本),而无需处理umbraco管理员小组?

感谢您的帮助:)

//修改

我的思绪正式被吹......我的回答是文化依赖的(我的意思是我根据国家/地区从数据库中提取不同的数据),但它并不像

那么简单
CurrentCulture.CultureInfo

Umbraco被配置为基于域扩展返回不同的文化(德国为.de,英国为.co.uk,Dennmark为.dk - 它只是umbraco管理面板中的手动配置,分配不同的文化信息和视图不同的主机名)。常规控制器从

获取此修改后的文化
RenderModel.CurrentCulture

作为参数传递给控制器​​的方法。有没有办法创建umbraco控制器/方法/ anthing,不会分配布局/模型(因此我可以显示从外部服务收到的纯XML数据),并且仍然可以访问umbraco的RenderModel的文化?我想要创建的是用户输入url:

http://my_address.de/myController/myMethod

我的控制器将获得当前的文化,调用外部服务传递culture作为参数并显示接收的数据而不将其包装在任何视图中。例如:

public class myController : SomeBaseUmbracoControllerOrsomething
{
    public string/XmlDocument/ActionResult myMethod(RenderModel model)
    {
        int countryId = myFunctionToTranslateCultureToCountryId(model.CurrentCulture);
        return MethodThatCallsExternalServiceAndReturnsXml(countryId);
    }
}

很抱歉有些困惑,但我刚刚与各国了解到这一切......

1 个答案:

答案 0 :(得分:2)

您不想使用

  • 控制器,因为umbraco路由进程没有选择
  • 你不想使用 RenderMvcController ,因为这有点矫枉过正
  • 您不想使用 Surfacecontroller ,因为您没有使用子操作或表单。

您需要的是 UmbracoApiController http://our.umbraco.org/documentation/Reference/WebApi/)或您的umbraco版本是PRE 6.1然后使用 / Base extention http://our.umbraco.org/documentation/Reference/Api/Base/Index

或者,如果您真的想要跳过特定路线的所有umbraco魔法,请添加到web.config / AppSettings / umbracoReservedUrls的路径。