【问题标题】:Can't access Model inside webform ascx file无法访问 webform ascx 文件中的模型
【发布时间】:2019-06-12 09:12:16
【问题描述】:

我正在尝试在我的演示文件视图中创建一个 ascx 模型的简单控制台日志。

<script>
    console.log("hello world", <%=Model%>);
</script>

我已经在第一行定义了模型

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Guide.ascx.cs" Inherits="Guide.Presentation.Form" %>

看在上帝的份上,这是背后的代码

namespace Guide.Presentation
{
    public partial class Form : ModelBoundUserControl<Model.Form>
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}

顶部的控制台日志显示为

未捕获的类型错误:无法读取未定义的属性“表单”

表示 Presentation 属性未定义。 我在 ascx 文件中设置模型的方式有什么问题吗?或者这是我们从中获取数据的 Sitecore 模型的问题?对正在发生的事情有什么想法吗?

【问题讨论】:

  • 您是要为营销人员扩展 Web 表单,还是要创建“普通”ascx Sitecore(子)布局?提示,如果可能的话,使用 MVC 代替 webForms。
  • @JanBluemink 该项目太成熟,无法将其转换为 MVC 项目。我不太明白你问题的第一部分。我相信该项目正在为各地的营销人员使用网络表单。
  • 看起来像这样:github.com/BoBreiting/SitecoreItemBinding 已添加到您的解决方案中。

标签: javascript webforms sitecore ascx web-forms-for-marketers


【解决方案1】:

看起来您的项目在 Sitecore 之上有某种框架,即 ModelBoundUserControl。

在 Sitecore ASP.NET Web 窗体中,您可以通过以下方式获取当前 Sitecore 项:

Sitecore.Context.Item

如果您使用数据源,您可以通过类似的方式获取数据源项。

Sublayout currentSublayout = this.Parent as Sublayout;
string DataSource = currentSublayout.DataSource;
item Item = Sitecore.Context.Database.GetItem(DataSource)

如果您使用的是非常旧的 Sitecore 版本,则数据源是路径而不是 GUID。

例如,如果您有 Sitecore 项目,则可以访问该字段

string Title =  item.Fields["Title"].Value;

其中 Title 是字段名称,您也可以使用 GUID。基本上没有模型你有一个通用的 Sitecore 项目对象。

【讨论】:

    猜你喜欢
    • 2019-07-26
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    • 2013-11-15
    相关资源
    最近更新 更多