Sitecore MVC Controller



我的视图中有"名字"字段。我的问题是如何使用我的控制器手动添加值或操作字段。注意:我的视图已连接到 Index.cshtml 文件,我的控制器名称是 FormsController

Firstname: @Html.Sitecore().Field("firstname")

最有可能的是,您将能够做您需要修改RenderingContext.Current.Rendering.Item的事情,但还有其他可用的变体。看看这几篇好文章,描述这里和这里的可用选项。

在您的视图中分配 @Html.Sitecore((。字段("名字"(到变量并在您的视图中执行逻辑(不是最好的 MVC 方法(。

@{
var firstName = Html.Sitecore().Field("firstname");
firstName = AddedCode + firstName;
}
Firstname:@firstName

或者在控制器中创建一个分部类,以扩展要传递给具有已操作的 Firstname 值的视图的模型。

如果您想在 Sitecore 中操作项目,这是一种方法,尽管您通常不希望从代码编辑 Sitecore 项目:

        var sitecoreItem = Sitecore.Context.Item;
        sitecoreItem = Sitecore.Data.Database.GetDatabase("master").GetItem(sitecoreItem.ID);
        using (new EditContext(sitecoreItem, SecurityCheck.Disable))
        {
            sitecoreItem["Navigation title"] = "I have just Edited";
        }

请注意,我首先从主数据库获取项目并获取项目,因为从 web db 编辑项目毫无意义。

正如我从您提供的代码中看到的那样,我的意思是代码的平静:

@Html.Sitecore().Field("firstname")

您希望使用上下文项的"名字"字段进行操作。如果是这样,您需要在控制器的适当操作中执行以下操作:

using (new Sitecore.SecurityModel.SecurityDisabler())
{
    Sitecore.Context.Item.Editing.BeginEdit();
    try
    {
        Sitecore.Context.Item["firstname"] = "set value you want";      
        Sitecore.Context.Item.Editing.EndEdit();
    }
    catch (Exception)
    {       
        Sitecore.Context.Item.Editing.CancelEdit();
    }
}

注意:使用 SecurityDisabler(( 意味着您的上下文用户可能没有上下文项的权限。所以它只是一个例子。使用安全编辑器授予对必要项目的适当访问权限的最佳实践

最新更新