Sitecore MVC模型在回发后丢失

Sitecore MVC模型在回发后丢失,sitecore,sitecore8,sitecore-mvc,Sitecore,Sitecore8,Sitecore Mvc,我有一个页面/注册,上面有两张表格 一个用于注册,一个用于登录。注册表单是一个控制器呈现,登录表单是另一个控制器呈现 当我加载/注册时,页面将正确加载并填充模型 当我单击submit按钮时,Post操作启动,模型突然重置回默认状态。模型是否应该在不重新填充的情况下保持填充状态 我的模型: using Glass.Mapper.Sc.Configuration; using Glass.Mapper.Sc.Configuration.Attributes; using Sitecore.Data.

我有一个页面/注册,上面有两张表格

一个用于注册,一个用于登录。注册表单是一个控制器呈现,登录表单是另一个控制器呈现

当我加载/注册时,页面将正确加载并填充模型

当我单击submit按钮时,Post操作启动,模型突然重置回默认状态。模型是否应该在不重新填充的情况下保持填充状态

我的模型:

using Glass.Mapper.Sc.Configuration;
using Glass.Mapper.Sc.Configuration.Attributes;
using Sitecore.Data.Items;
using Sitecore.Mvc.Presentation;
using System;
using System.Collections.Generic;

namespace MySite.Models.Items
{

    public class Registration: IRenderingModel
    {
        public Registration()
        {
            FirstName = string.Empty;
            LastName = string.Empty;
            Email = string.Empty;
            JobTitle = string.Empty;
            Company = string.Empty;
            Industry = string.Empty;
            SubIndustry = string.Empty;
            RevenueRange = string.Empty;
            Country = string.Empty;
            StateProvince = string.Empty;
            MarketoTracking = string.Empty;
            ReturnUrl = string.Empty;
        }

        public Rendering Rendering { get; set; }
        public Item Item { get; set; }
        public Item PageItem { get; set; }

        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Email { get; set; }
        public string JobTitle { get; set; }
        public string Company { get; set; }
        public string Industry { get; set; }
        public string SubIndustry { get; set; }
        public string RevenueRange { get; set; }
        public string Country { get; set; }
        public string StateProvince { get; set; }
        public string MarketoTracking { get; set; }
        public string ReturnUrl { get; set; }


        #region "Country List"
        public IEnumerable<CountryChildItem> CountryList { get; set; }
        public string CountryChildMenu { get; set; }

        [SitecoreType(AutoMap = true)]
        public class CountryItem
        {
            public virtual IEnumerable<CountryChildItem> Children { get; set; }
        }

        [SitecoreType(AutoMap = true)]
        public class CountryChildItem
        {
            [SitecoreId]
            public virtual Guid Id { get; set; }

            [SitecoreInfo(SitecoreInfoType.Path)]
            public virtual string Path { get; set; }

            [SitecoreField]
            public virtual string DisplayName { get; set; }

            [SitecoreField]
            public virtual string Abbreviation { get; set; }

            [SitecoreField]
            public virtual string SortOrder { get; set; }
        }
        #endregion



        #region "State / Province List"
        public IEnumerable<StateProvinceChildItem> StateProvinceList { get; set; }

        public class StateProvinceItem
        {
            public virtual IEnumerable<StateProvinceChildItem> Children { get; set; }
        }

        [SitecoreType(AutoMap = true)]
        public class StateProvinceChildItem
        {
            [SitecoreId]
            public virtual Guid Id { get; set; }

            [SitecoreInfo(SitecoreInfoType.Path)]
            public virtual string Path { get; set; }

            [SitecoreField]
            public virtual string DisplayName { get; set; }

            [SitecoreField]
            public virtual string Abbreviation { get; set; }

            [SitecoreField]
            public virtual string ParentCountry { get; set; }

            [SitecoreField]
            public virtual string SortOrder { get; set; }
        }
        #endregion



        #region "Industry List"
        public IEnumerable<IndustryChildItem> IndustryList { get; set; }
        public string IndustryChildMenu { get; set; }


        public class IndustryItem
        {
            public virtual IEnumerable<IndustryChildItem> Children { get; set; }
        }

        [SitecoreType(AutoMap = true)]
        public class IndustryChildItem
        {
            [SitecoreId]
            public virtual Guid Id { get; set; }

            [SitecoreInfo(SitecoreInfoType.Path)]
            public virtual string Path { get; set; }

            [SitecoreField]
            public virtual string DisplayName { get; set; }

            [SitecoreField]
            public virtual string SortOrder { get; set; }
        }
        #endregion



        #region "Sub-industry List"
        public IEnumerable<SubIndustryChildItem> SubIndustryList { get; set; }

        public class SubIndustryItem
        {
            public virtual IEnumerable<SubIndustryChildItem> Children { get; set; }
        }

        [SitecoreType(AutoMap = true)]
        public class SubIndustryChildItem
        {
            [SitecoreId]
            public virtual Guid Id { get; set; }

            [SitecoreInfo(SitecoreInfoType.Path)]
            public virtual string Path { get; set; }

            [SitecoreField]
            public virtual string DisplayName { get; set; }

            [SitecoreField]
            public virtual string ParentIndustry { get; set; }

            [SitecoreField]
            public virtual string SortOrder { get; set; }
        }
        #endregion



        #region "Revenue List"
        public IEnumerable<RevenueChildItem> RevenueList { get; set; }

        public class RevenueItem
        {
            public virtual IEnumerable<RevenueChildItem> Children { get; set; }
        }

        [SitecoreType(AutoMap = true)]
        public class RevenueChildItem
        {
            [SitecoreId]
            public virtual Guid Id { get; set; }

            [SitecoreInfo(SitecoreInfoType.Path)]
            public virtual string Path { get; set; }

            [SitecoreField]
            public virtual string DisplayName { get; set; }

            [SitecoreField]
            public virtual string SortOrder { get; set; }
        }
        #endregion



        public void Initialize(Rendering rendering)
        {
            Rendering = rendering;
            Item = rendering.Item;
            PageItem = PageContext.Current.Item;
        }
    }
}
使用Glass.Mapper.Sc.Configuration;
使用Glass.Mapper.Sc.Configuration.Attributes;
使用Sitecore.Data.Items;
使用Sitecore.Mvc.Presentation;
使用制度;
使用System.Collections.Generic;
命名空间MySite.Models.Items
{
公共类注册:IRenderingModel
{
公开注册()
{
FirstName=string.Empty;
LastName=string.Empty;
Email=string.Empty;
JobTitle=string.Empty;
Company=string.Empty;
Industry=string.Empty;
SubIndustry=string.Empty;
RevenueRange=string.Empty;
Country=string.Empty;
StateProvince=string.Empty;
MarketoTracking=string.Empty;
ReturnUrl=string.Empty;
}
公共呈现{get;set;}
公共项项{get;set;}
公共项PageItem{get;set;}
公共字符串名{get;set;}
公共字符串LastName{get;set;}
公共字符串电子邮件{get;set;}
公共字符串JobTitle{get;set;}
公共字符串公司{get;set;}
公共字符串行业{get;set;}
公共字符串子行业{get;set;}
公共字符串收入{get;set;}
公共字符串国家{get;set;}
公共字符串StateProvince{get;set;}
公共字符串MarketoTracking{get;set;}
公共字符串ReturnUrl{get;set;}
#区域“国家名单”
公共IEnumerable CountryList{get;set;}
公共字符串CountryChildMenu{get;set;}
[SitecoreType(AutoMap=true)]
公共类国家项目
{
公共虚拟IEnumerable子项{get;set;}
}
[SitecoreType(AutoMap=true)]
公共类CountryChildItem
{
[SitecoreId]
公共虚拟Guid Id{get;set;}
[SitecoreInfo(SitecoreInfoType.Path)]
公共虚拟字符串路径{get;set;}
[SitecoreField]
公共虚拟字符串DisplayName{get;set;}
[SitecoreField]
公共虚拟字符串缩写{get;set;}
[SitecoreField]
公共虚拟字符串排序器{get;set;}
}
#端区
#地区“州/省名单”
public IEnumerable StateProvinceList{get;set;}
公共类StateProvinceItem
{
公共虚拟IEnumerable子项{get;set;}
}
[SitecoreType(AutoMap=true)]
公共类StateProvinceChildItem
{
[SitecoreId]
公共虚拟Guid Id{get;set;}
[SitecoreInfo(SitecoreInfoType.Path)]
公共虚拟字符串路径{get;set;}
[SitecoreField]
公共虚拟字符串DisplayName{get;set;}
[SitecoreField]
公共虚拟字符串缩写{get;set;}
[SitecoreField]
公共虚拟字符串ParentCountry{get;set;}
[SitecoreField]
公共虚拟字符串排序器{get;set;}
}
#端区
#区域“行业列表”
公共IEnumerable行业列表{get;set;}
公共字符串IndustryChildMenu{get;set;}
公共类行业项目
{
公共虚拟IEnumerable子项{get;set;}
}
[SitecoreType(AutoMap=true)]
公共类工业儿童
{
[SitecoreId]
公共虚拟Guid Id{get;set;}
[SitecoreInfo(SitecoreInfoType.Path)]
公共虚拟字符串路径{get;set;}
[SitecoreField]
公共虚拟字符串DisplayName{get;set;}
[SitecoreField]
公共虚拟字符串排序器{get;set;}
}
#端区
#区域“子行业列表”
公共IEnumerable子行业列表{get;set;}
公共类子行业项目
{
公共虚拟IEnumerable子项{get;set;}
}
[SitecoreType(AutoMap=true)]
公共类亚行业儿童
{
[SitecoreId]
公共虚拟Guid Id{get;set;}
[SitecoreInfo(SitecoreInfoType.Path)]
公共虚拟字符串路径{get;set;}
[SitecoreField]
公共虚拟字符串DisplayName{get;set;}
[SitecoreField]
公共虚拟字符串ParentIndustry{get;set;}
[SitecoreField]
公共虚拟字符串排序器{get;set;}
}
#端区
#地区“收入清单”
公共IEnumerable收入列表{get;set;}
公营收入
{
公共虚拟IEnumerable子项{get;set;}
}
[SitecoreType(AutoMap=true)]
公营收入
{
[SitecoreId]
公共虚拟Guid Id{get;set;}
[SitecoreInfo(SitecoreInfoType.Path)]
公共虚拟字符串路径{get;set;}
[SitecoreField]
公共虚拟字符串DisplayName{get;set;}
[SitecoreField]
公共虚拟字符串排序器{get;set;}
}
#端区
公共void初始化(渲染)
{
伦德里
using Glass.Mapper.Sc;
using MySite.Analytics;
using MySite.Models.Items;
using Newtonsoft.Json.Linq;
using Sitecore.Diagnostics;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;

namespace MySite.Presentation.Controllers
{
    public class RegistrationController : AsyncController
        {

        Registration registration = new Registration();

        [HttpGet]
        public PartialViewResult Index(string view)
            {
            if (!string.IsNullOrWhiteSpace(view))
            {
                registration.ReturnUrl = view.Trim();
            }
            if (string.IsNullOrEmpty(registration.ReturnUrl) && Request.UrlReferrer != null)
            {
                registration.ReturnUrl = Server.UrlDecode(Request.UrlReferrer.AbsoluteUri ?? string.Empty);
            }
            PopulateLists();
            return PartialView(registration);
        }


        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Index(string RegistrationButton, FormCollection formCollection)
        {
            if (!string.IsNullOrEmpty(RegistrationButton))
            {
                try
                {
                    registration.FirstName = formCollection["FirstName"].Trim();
                    registration.LastName = formCollection["LastName"].Trim();
                    registration.Email = formCollection["Email"].Trim();
                    registration.JobTitle = formCollection["JobTitle"].Trim();
                    registration.Company = formCollection["Company"].Trim();
                    registration.Industry = formCollection["Industry"].Trim();
                    registration.SubIndustry = formCollection["SubIndustry"].Trim();
                    registration.RevenueRange = formCollection["RevenueRange"].Trim();
                    registration.Country = formCollection["Country"].Trim();
                    registration.StateProvince = formCollection["StateProvince"].Trim();
                    registration.MarketoTracking = formCollection["_mkt_trk"].Trim();
                    ContactManagement contactManagement = new ContactManagement();
                    contactManagement.RegisterContact(registration);
                }
                catch (Exception ex)
                {
                    Log.Error("MySite.Presentation.Controllers.RegistrationController.Index", ex, this);
                }
            }
            return PartialView();
        }


        public void PopulateLists()
        {
            ISitecoreContext sitecoreContext = new SitecoreContext();
            ISitecoreService service = new SitecoreService(sitecoreContext.Database);

            Guid countryItemID = new Guid("{2FB5AE2D-E80D-4A3D-9201-3E62E781EFCD}");
            Registration.CountryItem countryItem = service.GetItem<Registration.CountryItem>(countryItemID);
            registration.CountryList = countryItem.Children.OrderBy(l => System.Convert.ToInt32(l.SortOrder)).ThenBy(l => l.DisplayName);

            Guid stateProvinceItemID = new Guid("{6171F149-0200-4010-BF5F-5F32EAAE31B4}");
            Registration.StateProvinceItem stateProvinceItem = service.GetItem<Registration.StateProvinceItem>(stateProvinceItemID);
            registration.StateProvinceList = stateProvinceItem.Children.OrderBy(l => System.Convert.ToInt32(l.SortOrder)).ThenBy(l => l.DisplayName);

            Guid industryItemID = new Guid("{ACD77146-0530-4EEE-A477-BF8CD54B9FFE}");
            Registration.IndustryItem industryItem = service.GetItem<Registration.IndustryItem>(industryItemID);
            registration.IndustryList = industryItem.Children.OrderBy(l => System.Convert.ToInt32(l.SortOrder)).ThenBy(l => l.DisplayName);

            Guid subIndustryItemID = new Guid("{43AAABDF-9591-4F03-9894-0EAEFD1292B3}");
            Registration.SubIndustryItem subIndustryItem = service.GetItem<Registration.SubIndustryItem>(subIndustryItemID);
            registration.SubIndustryList = subIndustryItem.Children.OrderBy(l => System.Convert.ToInt32(l.SortOrder)).ThenBy(l => l.DisplayName);

            Guid revenueItemID = new Guid("{86C0FF05-5A9C-4113-BEE6-B68E19BAAB37}");
            Registration.RevenueItem revenueItem = service.GetItem<Registration.RevenueItem>(revenueItemID);
            registration.RevenueList = revenueItem.Children.OrderBy(l => System.Convert.ToInt32(l.SortOrder)).ThenBy(l => l.DisplayName);
        }


        public string GetChildList(string countryDisplayName, IEnumerable<Registration.StateProvinceChildItem> stateProvinceChildItem)
        {
            string menuString = string.Empty;
            if (stateProvinceChildItem != null)
            {
                JArray menuArray = new JArray();
                foreach (var state in stateProvinceChildItem)
                {
                    if (state.ParentCountry == countryDisplayName)
                    {
                        JValue menuItem = new JValue("{\"name\": \"" + state.DisplayName + " (" + state.Abbreviation + ")\", \"value\": \"" + state.Abbreviation + "\"}");
                        menuArray.Add(menuItem);
                    }
                }
                if (menuArray.Count > 0)
                {
                    menuString = "data-child-menu='{\"items\": " + menuArray.ToString() + "}'";
                }
            }
            return menuString;
        }


        public string GetChildList(string industryId, IEnumerable<Registration.SubIndustryChildItem> subIndustryChildItem)
        {
            string menuString = string.Empty;
            if (subIndustryChildItem != null)
            {
                JArray menuArray = new JArray();
                foreach (var subIndustry in subIndustryChildItem)
                {
                    if (subIndustry.ParentIndustry.Trim().ToUpperInvariant().Contains(industryId.Trim().ToUpperInvariant()))
                    {
                        JValue menuItem = new JValue("{\"name\": \"" + subIndustry.DisplayName + "\", \"value\": \"" + subIndustry.DisplayName + "\"}");
                        menuArray.Add(menuItem);
                    }
                }
                if (menuArray.Count > 0)
                {
                    menuString = @"data-child-menu='{""items"": " + menuArray.ToString() + "}'";
                }
            }
            return menuString;
        }

    }
}