代码之家  ›  专栏  ›  技术社区  ›  Timo Willemsen

在Umbraco custom controller中修改IPublishedContent属性

  •  0
  • Timo Willemsen  · 技术社区  · 9 年前

    我有一个输出属性的布局。

    布局.cshtml

    inherits Umbraco.Web.Mvc.UmbracoTemplatePage
    ...
    //More of the layout here
    
    <title>@Model.Content.GetPropertyValue("title")</title>
    
    ...
    

    这是其他模板的基础:

    FullWidth.cshtml

    @{ Layout = "Layout.cshtml"; }
    ... layout here
    

    这一切都很好,我确保每个文档类型都有一个名为 title

    现在我正在创建一个页面,其中显示了数据库中的一些数据。因此,我创建了一个自定义控制器:

    public class ProductController : RenderMvcController
    {
        public ActionResult Index(Rendermodel model, int id)
        {
              var viewModel = new CustomRenderModel(model.Content);
              viewModel.Product = Database.GetProductById(id);
              return CurrentTemplate(viewModel);
        }
    
    }
    

    这也很管用,但我想做的下一件事是根据从数据库中检索到的内容设置标题。类似这样:

    var viewModel = new CustomRenderModel(model.Content);
    var product = Database.GetProductById(id);
    viewModel.Product = product;
    viewModel.Content.SetPropertyValue("title", product.name");
    

    显然,这不起作用,因为IPublishedContent是只读的。我只是想知道最好的方法是修改这样的属性。

    SetPropertyValue 这可能是个坏主意,但解决这个问题的方法是什么。

    2 回复  |  直到 9 年前
        1
  •  1
  •   prjseal    9 年前

    我将在一个单独的局部视图中渲染这个标题,并为该局部视图提供一个要渲染的特定模型。

    看看我写的这篇博客文章,它向你展示了如何做到这一点。 http://www.codeshare.co.uk/blog/how-to-optimise-your-website-for-search-engines-seo-in-umbraco/