string ObjectKey(ViewShortcut currentShortcut, IModelViewFriendlyUrl modelView) { if (!string.IsNullOrEmpty(currentShortcut.ObjectKey)) { var objectByKey = GetObjectByKey(currentShortcut.ObjectKey, modelView.AsObjectView); return GetFriendlyObjectKey(modelView, objectByKey); } return null; }
public override string GetQueryString(ViewShortcut viewShortcut) { if (viewShortcut != null && !IsNewObjectView(viewShortcut)) { if (IsListView(viewShortcut.ViewId) && reductions.TryGetValue(viewShortcut.ToString(), out string str)) { return(str); } if (IsDetailView(viewShortcut.ViewId)) { IModelViewFriendlyUrl modelView = (IModelViewFriendlyUrl)WebApplication.Instance.Model.Views[viewShortcut.ViewId]; var objectKey = ObjectKey(viewShortcut, modelView); string strmode = viewShortcut.TryGetValue("mode", out string mode) ? string.Format("&mode={0}", mode) : ""; string strView = string.Empty; if (objectKey != null) { strView = strmode == "" ? viewShortcut.ToString().Replace(objectKey, "{0}") : viewShortcut.ToString().Replace(objectKey, "{0}").Replace(strmode, ""); } else { strView = strmode == "" ? viewShortcut.ToString() : viewShortcut.ToString().Replace(strmode, ""); } if (reductions.TryGetValue(strView, out str)) { return(string.Format("{0}?{1}={2}{3}", str, ((IModelDetailViewFriendlyUrl)modelView).Url.ValueMemberName, objectKey, strmode)); } } } return(base.GetQueryString(viewShortcut)); }
string ObjectKey(ViewShortcut currentShortcut, IModelViewFriendlyUrl modelView) { if (!string.IsNullOrEmpty(currentShortcut.ObjectKey)) { var objectByKey = GetObjectByKey(currentShortcut.ObjectKey, modelView.AsObjectView); return(GetFriendlyObjectKey(modelView, objectByKey)); } return(null); }
string GetFriendlyObjectKey(IModelViewFriendlyUrl modelView, object objectByKey) { if (modelView.AsObjectView != null && modelView.AsObjectView.ModelClass.TypeInfo.IsPersistent) { var friendlyKeyMember = ((IModelDetailViewFriendlyUrl)modelView).Url.ValueMemberName; var memberInfo = modelView.AsObjectView.ModelClass.FindMember(friendlyKeyMember).MemberInfo; if (objectByKey != null) { var value = memberInfo.GetValue(objectByKey); return(value?.ToString()); } } return(null); }
string GetFriendlyObjectKey(IModelViewFriendlyUrl modelView, object objectByKey) { if (modelView.AsObjectView != null && modelView.AsObjectView.ModelClass.TypeInfo.IsPersistent) { var friendlyKeyMember = ((IModelDetailViewFriendlyUrl)modelView).Url.ValueMemberName; var memberInfo = modelView.AsObjectView.ModelClass.FindMember(friendlyKeyMember).MemberInfo; if (objectByKey != null) { var value = memberInfo.GetValue(objectByKey); return value != null ? value.ToString() : null; } } return null; }