OrchardHUN.TrainingDemo 学习记录(1)-Controller中,使用Orchard API

1、Controller中,使用Orchard API.例子:

using Orchard;
using Orchard.Localization;
using Orchard.Logging;
using Orchard.Mvc;
using Orchard.UI.Notify;
using System.Web.Mvc;

namespace OrchardHUN.TrainingDemo.Controllers
{
    public class DependencyInjectionController :Controller
    {
        private readonly INotifier _notifier;

        private readonly IWorkContextAccessor _wca;
        private readonly IHttpContextAccessor _hca;
        public Localizer T { get; set; }

        public ILogger Logger { get; set; }

        public DependencyInjectionController(INotifier notifier, IWorkContextAccessor wca, IHttpContextAccessor hca)
        {
            _notifier = notifier;
            _wca = wca;
            _hca = hca;
            T = NullLocalizer.Instance;
            Logger = NullLogger.Instance;
        }
        public ActionResult NotifyMe()
        {
            //当前用户
            var currentUser = _wca.GetContext().CurrentUser;
            //当前用户名称
            var currentUserName = currentUser == null ? "<subject name here>" : currentUser.UserName;
            //当前URL
            var currentUrl = _hca.Current().Request.Url.ToString();
            //在用户界面出现消息

            _notifier.Information(T("Please continue testing. -- Subject name: {0}; Subject location: {1}", currentUserName, currentUrl));

           //在日志中写入消息,消息存放在以日期为单位,类型为error的信息文本文件中 App_Data/Logs!
            Logger.Error("Test subject notified.");

            // We redirect to the first controller here but the notification will still be displayed. This is because notifications
            // are meant to provide a way to interact with the user even after a redirect. Of course after they're shown once 
            // notifications will be dismissed.
            return RedirectToAction("Index", "YourFirstOrchard");
        }
    }
}

 

 

 

 

 

posted @ 2013-05-26 09:32  飞翔的天空  阅读(389)  评论(0编辑  收藏  举报