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