我正在用umbraco8创建一个新的网站,我有一个问题,如何从主页的角度加载一个
主页查看
@inherits Umbraco.Web.Mvc.UmbracoViewPage<ContentModels.HomePage>
@using ContentModels = Umbraco.Web.PublishedModels;
@{
Layout = "webBase.cshtml";
}
@{ Html.RenderAction("RenderHomeSlider", "HomePage"); } 主页控制器
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Umbraco.Web.Mvc;
using System.Web.Mvc;
using Umbraco.Core.Models;
using HAWELE.Models;
using Archetype.Models;
using Umbraco.Web;
using System.Threading;
using Umbraco.Web.Mvc.SurfaceController;
public class HomePageController : Umbraco.Web.Mvc.SurfaceController
{
public ActionResult Index(RenderModel model)
{
return base.Index(model);
}
private const string PARTIAL_VIEW_HOME_FOLDER = "~/Views/Partials/HomePage/";
public ActionResult RenderHomeSlider(this HtmlHelper html)
{
return PartialView(PARTIAL_VIEW_HOME_FOLDER + "_HomeSlider.cshtml");
}
}发布于 2020-06-09 06:36:38
这个问题与Umbraco无关。调用方法中缺少[ChildActionOnly]属性:
RenderAction(HtmlHelper, String, String)使用指定的控制器名称调用指定的子操作方法,并在父视图中内联呈现结果。
发布于 2020-06-09 18:58:40
尝试以下几点:
从控制器中移除索引方法。它与表面控制器无关。
修改RenderHomeSlider操作以:
public ActionResult RenderHomeSlider()
{
return PartialView(PARTIAL_VIEW_HOME_FOLDER + "_HomeSlider.cshtml");
}在你看来这条线
@{ Html.RenderAction("RenderHomeSlider", "HomePage"); } 应改为
@Html.Action("RenderHomeSlider", "HomePage")这应该呈现_HomeSlider.cshtml中的html。
还不清楚您的_HomeSlider.cshtml部分是否需要传递任何模型,所以我假设它不需要。
要测试上面的内容是否有效,您只需将一些简单的文本放在您的部分中,并查看它是否呈现在页面上。
我不知道您的代码其余部分是什么样子,所以不能确切地说明您在这里试图实现的目标是否是最快捷的方法。
祝好运
https://stackoverflow.com/questions/62244891
复制相似问题