對于個人(注冊表)與團隊(團隊表)(兩張表沒有關聯)的展示與可空判斷
1,在Model中只有GroupId沒有名稱(GroupName),所以自己定義一個:
/// <summary>/// RegistratorMessage 界面模型類/// </summary>[Validator(typeof(RegistratorMessageValidator))]public partial class RegistratorMessageModel : BaseNopEntityModel{/// <summary>/// RegistratorMessage構造/// </summary>public RegistratorMessageModel(){}/// <summary>/// 獲取或設置 團隊標識/// </summary>[NopResourceDisplayName("Admin.RegistratorMessage.GroupId")][UIHint("Int32Nullable")]public Nullable<int> GroupId { get; set; }/// <summary>/// 團隊標識名稱/// </summary>public string GroupName { get; set; }}
2.在界面(view)列表展示中
columns: [{field: "GroupName",//團隊標識名稱title: "@T("Admin.RegistratorMessage.GroupId")",width:100,}]
2.1在添加界面呈現方式
<div class="form-group"><div class="col-md-3">@Html.NopLabelFor(model => model.GroupId)</div><div class="col-md-6">@Html.NopEditorFor(model => model.GroupName)//輸入框中的值@Html.ValidationMessageFor(model => model.GroupId)</div></div>
3.在服務端(控制器中)
為了能呈現界面的GroupName ,故需要在控制器中(ListInfo方法,Create方法,Edit方法)調用公共方法:
public string GroupNameIcon(RegistratorMessageModel model){if (model.GroupId.HasValue)//用0標識不是團隊 判斷是否可空 {if (model.GroupId.Value != 0)//判斷是否為0(即個人){model.GroupName = _groupRegistratorMessageService.GetGroupRegistratorMessageById(model.GroupId.Value).GroupName;}else{model.GroupName = "0";}}else{model.GroupName = "0";}return model.GroupName;}
調用方式為:GroupNameIcon(model)
例如:添加方法中
public ActionResult Create(){var model = new RegistratorMessageModel();GroupNameIcon(model);//團隊標識名稱return View(model);}
其余方法與添加方法的使用相同。
4,將界面傳回來的GroupName通過查詢獲得GroupId(因為數據庫存儲的是GroupId,GroupName只是自己定義的為了臨時展示用的)
使用方式的方式調用:
方法為:
private void GroupIdIcon(RegistratorMessageModel model, RegistratorMessage eventInfo){eventInfo.GroupId = _groupRegistratorMessageService.GetAllGroupRegistratorMessages().FirstOrDefault(x => x.GroupName == model.GroupName) != null ? (_groupRegistratorMessageService.GetAllGroupRegistratorMessages().FirstOrDefault(x => x.GroupName == model.GroupName).Id) : 0;}
4.1方法的調用為:
例子:添加界面(將輸入的GroupName轉為數據庫可以存放的GroupId)
[HttpPost, ParameterBasedOnFormName("save-continue", "continueEditing")]public ActionResult Create(RegistratorMessageModel model, bool continueEditing){if (ModelState.IsValid){var Info = model.ToEntity();GroupIdIcon(model, Info);//獲得團隊id _registratorMessageService.InsertRegistratorMessage(Info);//插入到數據庫 SuccessNotification(_localizationService.GetResource("添加成功"));if (continueEditing){return RedirectToAction("Edit", new { id = Info.Id });}return RedirectToAction("List");}GroupNameIcon(model);//團隊標識名稱return View(model);}
?上面這種做法有一個問題就是:如何在添加或者編輯的時候出現了還沒有存在數據庫團隊名稱,則列表展示中將不會出現數據。所以不建議才有公共里面的方法
?
使用這種判斷方式:先判斷在團隊存在的是否存在的前提下,再在去查詢匹配數據庫,進而判斷是否賦值
if (entity.GroupId != null){var team = _groupRegistratorMessageService.GetAllGroupRegistratorMessages().FirstOrDefault(g => g.Id == entity.GroupId);if (team != null){model.TeamName = team.GroupName;}}
?
posted on 2017-01-16 13:37 WFaceBoss 閱讀(...) 評論(...) 編輯 收藏