2

我正在开发一个 umbraco mvc 网站,但我无法在表面控制器中获取当前页面信息。

这是我的场景:

我有一个产品页面。并且有过滤产品列表的复选框。我写了一个 ajax post 函数,它在复选框更改事件时触发。

$.ajax({
            type: "POST",
            url: '/umbraco/Surface/ProductsSurface/Products',
            data: JSON.stringify({ some data }),
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            traditional: true,
            cache: false,
            beforeSend: function () {
                $("#imgAjaxLoader").css("display", "inline");
            },
            complete: function () {
                $("#imgAjaxLoader").css("display", "none");
            },
            success: function (data) {
                if (data.Status != null) {                        
                } else {
                }
            }
        });

我想要的是过滤产品列表,重现产品列表,将此数据发送到模板页面,使用产品列表呈现此页面并获取呈现的页面字符串,然后使用 Json 将此字符串返回到页面。

这是我的渲染剃刀视图方法:

public string RenderRazorViewToString(string viewName, object model)
    {
        ViewData.Model = model;
        using (var sw = new StringWriter())
        {
            var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
            var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
            viewResult.View.Render(viewContext, sw);
            viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
            return sw.GetStringBuilder().ToString();
        }
    }

但问题是即使我的模板页面不是从 umbraco 继承的,它仍然需要从渲染模型继承的模型。所以我继承了它。

这是我的模型:

public class ProductListTemplateViewModel : RenderModel
{
    //Some Properties

    public ProductListTemplateViewModel() : this(new UmbracoHelper(UmbracoContext.Current).TypedContent(UmbracoContext.Current.PageId)) { }
    public ProductListTemplateViewModel(IPublishedContent content, CultureInfo culture) : base(content, culture) { }
    public ProductListTemplateViewModel(IPublishedContent content) : base(content) { }
}

但是在我这样做并渲染页面之后,我得到了一个错误说Value Cannot Be NULL

那是因为 IPublishedContent 内容对象为空,所以我必须将此值绑定到我的视图模型。

IPublishedContent iPublishedContent = CurrentPage;

在执行此代码时,什么也没有发生,它不会执行下一个代码。它就像冻结在那里,进入一个无限循环。

所以我无法获得价值。没有发生任何错误。

我现在很绝望。任何帮助都会很棒。

谢谢。

4

0 回答 0