Asp.net mvc Umbraco曲面控制器或渲染控制器

Asp.net mvc Umbraco曲面控制器或渲染控制器,asp.net-mvc,umbraco,Asp.net Mvc,Umbraco,嗨,我有我的“主”控制器和一个“分拣”控制器在翁布拉科7。“主”控制器对于索引操作工作正常,因为它是从RenderMvcController重写的。首先,我搞不清楚我应该在哪个实例中使用哪个控制器,即曲面控制器或渲染控制器。我似乎无法访问下面的twitter操作,这是ajax所需要的。我是否需要将twitter操作放在surface控制器中,还是可以在umbraco中使用常规mvc控制器 public override ActionResult Index(RenderModel mo

嗨,我有我的“主”控制器和一个“分拣”控制器在翁布拉科7。“主”控制器对于索引操作工作正常,因为它是从RenderMvcController重写的。首先,我搞不清楚我应该在哪个实例中使用哪个控制器,即曲面控制器或渲染控制器。我似乎无法访问下面的twitter操作,这是ajax所需要的。我是否需要将twitter操作放在surface控制器中,还是可以在umbraco中使用常规mvc控制器

     public override ActionResult Index(RenderModel model)


       {
            var storedProcedure = new StoredProcedure()
            {
                ConnectionString = ConfigurationManager.ConnectionStrings["CentralDbContext"].ConnectionString
            };

            DataSet ds = storedProcedure.ExecuteProcedureToDataSet("GetHomePage");

            IMapSetup map = new MapHomePage();
            HomePage homepage = map.Setup<HomePage>(ds);


            homepage.Slideshow = CurrentPage.AncestorsOrSelf(1).First().Descendants("SlideshowItem").Take(5).AsMany<Slideshow>();

            this._weatherSettings.DefaultLocation = "warrington";
            homepage.Forecast = new Forecaster(this._weatherSettings, this._cacheHelper).GetWeather(this._weatherSettings.DefaultLocation);

            return CurrentTemplate(homepage);
        }
 public ActionResult TwitterSort(int? page)
    {
        int currentPageIndex = page.HasValue ? page.Value - 1 : 0;

        var storedProcedure = new StoredProcedure()
        {
            ConnectionString = ConfigurationManager.ConnectionStrings["CentralDbContext"].ConnectionString
        };

        DataSet ds = storedProcedure.ExecuteProcedureToDataSet("GetHomePage");

        IMapSetup map = new MapHomePage();
        HomePage homepage = map.Setup<HomePage>(ds);


        if (Request.IsAjaxRequest())
        {
            return PartialView("umbTweets", homepage.Twitter.ToPagedList(currentPageIndex, DefaultPageSize));
        }

        return PartialView(homepage.Twitter.ToPagedList(currentPageIndex, DefaultPageSize));
    }
public override ActionResult索引(RenderModel模型)
{
var storedProcedure=新的storedProcedure()
{
ConnectionString=ConfigurationManager.ConnectionString[“CentralDbContext”]。ConnectionString
};
DataSet ds=storedProcedure.ExecuteProcedureToDataSet(“GetHomePage”);
IMapSetup map=新建MapHomePage();
主页=地图设置(ds);
homepage.Slideshow=CurrentPage.AncestorsOrSelf(1).First().subjects(“SlideshowItem”).Take(5.AsMany();
这是。_weatherSettings.DefaultLocation=“warrington”;
homepage.Forecast=newforecaster(this.\uweathersettings,this.\ucachelper).GetWeather(this.\uweathersettings.DefaultLocation);
返回当前模板(主页);
}
公共行动结果推特排序(int?页)
{
int currentPageIndex=page.HasValue?page.Value-1:0;
var storedProcedure=新的storedProcedure()
{
ConnectionString=ConfigurationManager.ConnectionString[“CentralDbContext”]。ConnectionString
};
DataSet ds=storedProcedure.ExecuteProcedureToDataSet(“GetHomePage”);
IMapSetup map=新建MapHomePage();
主页=地图设置(ds);
if(Request.IsAjaxRequest())
{
返回PartialView(“umbTweets”,homepage.Twitter.ToPagedList(currentPageIndex,DefaultPageSize));
}
返回PartialView(homepage.Twitter.ToPagedList(currentPageIndex,DefaultPageSize));
}
我的方法是:

  • 渲染控制器仅用于向用户显示数据
  • Surface controller用于交互(我主要用于ajax或表单的交互)
要呈现子动作,可以使用以下示例:

更新: 要实现自定义路由,您可以查看


我可以更改surface Controller在umbraco tho中使用的默认路径吗?我不希望我的主页在url中是/umbraco/surface-我可以用SurfaceControl更新传递到视图的模型吗too@MatthewChambers检查更新,是的,你可以,不,你不应该让所有的东西都通过surface controller运行(仅通信)不要忘记在umbraco的web.config中添加路径umbracoReservedPaths@VinnyG为什么它应该位于保留路径中?