-1

次の .cs ファイルがあります。

using System;
using System.Collections.Generic;
using Sitecore.Data;
using Sitecore.Data.Items;
using Sitecore.Diagnostics;
using Sitecore.Events;
using Sitecore.SecurityModel;

namespace LocationItemEventHandler
{
    public class ItemEventHandler
    {
        private static readonly SynchronizedCollection<ID> MProcess = new SynchronizedCollection<ID>();

        /// <summary>
        /// This custom event auto-populates latitude/longitude co-ordinate when a location item is saved
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        protected void OnItemSaved(object sender, EventArgs args)
        {
            var item = Event.ExtractParameter(args, 0) as Item;

            if (item != null && !MProcess.Contains(item.ID))
            {
                if (item.TemplateID.Equals("{E490971E-758E-4A75-9C8D-67EC2C6321CA}"))
                {
                    string errMessage = "";
                    string responseCode = "";
                    string address = item.Fields["Address"].Value;
                    if (1=1)
                    {
                        string latitude = "100";
                        string longitude = "200";

                        MProcess.Add(item.ID);

                        try
                        {
                            var latlngField = item.Fields["Google LatLng"];
                            using (new SecurityDisabler())
                            {
                                item.Editing.BeginEdit();
                                latlngField.SetValue(latitude + " - " + longitude, true);
                                Sitecore.Context.ClientPage.ClientResponse.Alert(
                                string.Format(
                                "Fields updated automatically\r\nLatitude: {0}\r\nLongitude: {1}",
                                latitude, longitude));
                                item.Editing.EndEdit();
                            }
                        }
                        catch (Exception exception)
                        {
                            Log.Error(exception.Message, this);
                        }
                        finally
                        {
                            MProcess.Remove(item.ID);
                        }
                    }
                }
            }
        }
    }
}

これは のコード ファイルLocationItemEventHandler.csにありApp_Codeます。これはweb.configにあります

<event name="item:saved">
<handler type="LocationItemEventHandler.ItemEventHandler, LocationItemEventHandler" method="OnItemSaved"/>
</event>

アイテムを保存しようとすると、「型名を解決できませんでした」というメッセージが表示されます。

私は何が欠けていますか?

4

1 に答える 1

0

設定したクラス名が実際のクラス名と一致しません。

編集:ハンドラーが App_Code にある場合は、型参照でアセンブリ名を除外する必要があると思います。いっそのこと、App_Code を使用しないでください。

于 2012-10-06T22:01:51.440 に答える