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;
}
}