[break] ValueTuple<IEntity, DataField>修改为EntityField类,下游用户如果自定义了表单项,将会导致错误,需要把model也修改为EntityField。

This commit is contained in:
智能大石头 2025-05-26 18:05:02 +08:00
parent 11b211a8d9
commit b0bfff2bde
55 changed files with 175 additions and 284 deletions

View File

@ -71,7 +71,7 @@
}
else
{
@await Html.PartialAsync("_List_Data_Item", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_List_Data_Item", new EntityField(entity, item))
}
}
@if (this.Has(PermissionFlags.Detail, PermissionFlags.Update, PermissionFlags.Delete))

View File

@ -122,7 +122,7 @@
}
else
{
@await Html.PartialAsync("_List_Data_Item", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_List_Data_Item", new EntityField(entity, item))
}
}
</tr>

View File

@ -40,7 +40,7 @@
}
else
{
@await Html.PartialAsync("_Form_Editor", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_Form_Editor", new EntityField(entity, item))
}
</div>
<div class="layui-form-mid layui-word-aux">

View File

@ -55,7 +55,7 @@
}
else
{
@await Html.PartialAsync("_Form_Group", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_Form_Group", new EntityField(entity, item))
}
}
}

View File

@ -1,33 +1,33 @@
@using NewLife;
@model EntityField
@using NewLife;
@using NewLife.Cube.ViewModels
@using XCode;
@using XCode.Configuration;
@{
var pair = (ValueTuple<IEntity, DataField>)Model;
var entity = pair.Item1;
var field = pair.Item2;
var entity = Model.Entity;
var field = Model.Field;
var set = NewLife.Cube.CubeSetting.Current;
var cls = set.FormGroupClass;
if (cls.IsNullOrEmpty()) { cls = "layui-form-item"; }
var isHide="";
var isHide = "";
if (field.Name.EqualIgnoreCase("CreateUserID", "CreateUser", "CreateTime", "CreateIP",
"UpdateUserID", "UpdateUser", "UpdateTime", "UpdateIP", "StateCode", "StatusCode","Auditor","AuditTime","EffectiveTime","DeactivateTime","BomDetailedIDs"))
"UpdateUserID", "UpdateUser", "UpdateTime", "UpdateIP", "StateCode", "StatusCode", "Auditor", "AuditTime", "EffectiveTime", "DeactivateTime", "BomDetailedIDs"))
{
isHide="layui-hide";
isHide = "layui-hide";
}
}
@if (field.IsBigText())
{
var isRow = cls.Contains("row") ? "row" : "";
<div class="layui-form-item @(isRow) @isHide">
@await Html.PartialAsync("_Form_Type_BigText", (Object)Model)
@await Html.PartialAsync("_Form_Type_BigText", Model)
</div>
}
else
{
<div class="layui-form-item @isHide">
@await Html.PartialAsync("_Form_Type_Item", (Object)Model)
@await Html.PartialAsync("_Form_Type_Item", Model)
</div>
}

View File

@ -115,7 +115,7 @@
}
else
{
@await Html.PartialAsync("_List_Data_Item", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_List_Data_Item", new EntityField(entity, item))
}
}
</tr>

View File

@ -18,6 +18,6 @@
*@
if (!item.PrimaryKey)
{
@await Html.PartialAsync("_Form_Group", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_Form_Group", new EntityField(entity, item))
}
}

View File

@ -1,12 +1,12 @@
@using NewLife;
@model EntityField
@using NewLife;
@using NewLife.Cube
@using XCode;
@using XCode.Configuration;
@{
var pair = (ValueTuple<IEntity, DataField>)Model;
var entity = pair.Item1;
var item = pair.Item2;
var entity = Model.Entity;
var item = Model.Field;
var type = item.Type;
@ -38,7 +38,7 @@ else
//映射字段
if (!item.MapField.IsNullOrEmpty())
{
@await Html.PartialAsync("_Form_Type_Map", pair)
@await Html.PartialAsync("_Form_Type_Map", Model)
}
//自读属性
else if (item.Name.EqualIgnoreCase("ID"))

View File

@ -1,10 +1,10 @@
@using NewLife;
@model EntityField
@using NewLife;
@using XCode;
@using XCode.Configuration;
@{
var pair = (ValueTuple<IEntity, DataField>)Model;
var entity = pair.Item1;
var field = pair.Item2;
var entity = Model.Entity;
var field = Model.Field;
var set = NewLife.Cube.CubeSetting.Current;
var cls = set.FormGroupClass;
@ -21,12 +21,12 @@
{
var isRow = cls.Contains("row") ? "row" : "";
<div class="layui-form-item @(isRow) @isHide">
@await Html.PartialAsync("_Form_Type_BigText", (Object)Model)
@await Html.PartialAsync("_Form_Type_BigText", Model)
</div>
}
else
{
<div class="layui-form-item @isHide">
@await Html.PartialAsync("_Form_Type_Item", (Object)Model)
@await Html.PartialAsync("_Form_Type_Item", Model)
</div>
}

View File

@ -1,11 +1,11 @@
@using NewLife;
@model EntityField
@using NewLife;
@using NewLife.Cube
@using XCode;
@using XCode.Configuration;
@{
var pair = (ValueTuple<IEntity, DataField>)Model;
var entity = pair.Item1;
var field = pair.Item2;
var entity = Model.Entity;
var field = Model.Field;
var fields = ViewBag.Fields as FieldCollection;
var dataField = fields.GetField(field.Name);

View File

@ -1,11 +1,11 @@
@model ValueTuple<IEntity, DataField>
@model EntityField
@using NewLife;
@using NewLife.Cube
@using XCode;
@using XCode.Configuration;
@{
var entity = Model.Item1;
var field = Model.Item2;
var entity = Model.Entity;
var field = Model.Field;
var fn = field.Name.ToLower();
var value = entity[field.Name] as String;
}

View File

@ -1,12 +1,12 @@
@model ValueTuple<IEntity, DataField>
@model EntityField
@using NewLife;
@using NewLife.Cube
@using NewLife.Cube.ViewModels;
@using XCode;
@using XCode.Configuration;
@{
var entity = Model.Item1;
var item = Model.Item2;
var entity = Model.Entity;
var item = Model.Field;
var fields = ViewBag.Fields as FieldCollection;
var dataField = fields.GetField(item.Name) as ListField;
@ -85,7 +85,7 @@
var set = entity.GetType().GetValue("Setting") as IEntityTreeSetting;
if (set == null || set.Parent != item.Name)
{
@await Html.PartialAsync("_Form_Editor", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_Form_Editor", new EntityField(entity, item))
}
else
{
@ -99,7 +99,7 @@
else
{
@*@Html.ForEditor(item.Name, entity[item.Name], item.Type)*@
@await Html.PartialAsync("_Form_Editor", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_Form_Editor", new EntityField(entity, item))
}
}
}

View File

@ -1,11 +1,11 @@
@model ValueTuple<IEntity, DataField>
@model EntityField
@using NewLife;
@using NewLife.Cube
@using XCode;
@using XCode.Configuration;
@{
var entity = Model.Item1;
var field = Model.Item2;
var entity = Model.Entity;
var field = Model.Field;
var b = entity[field.MapField].ToInt();
var fn = field.MapField.ToLower();

View File

@ -79,7 +79,7 @@
}
else
{
@await Html.PartialAsync("_List_Data_Item", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_List_Data_Item", new EntityField(entity, item))
}
}
<td class="text-center">

View File

@ -1,16 +1,12 @@
@*
For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
*@
@model EntityField
@using NewLife;
@using Microsoft.AspNetCore.Routing
@using XCode;
@using XCode.Configuration;
@{
var fact = ViewBag.Factory as IEntityFactory;
var pair = (ValueTuple<IEntity, DataField>)Model;
var entity = pair.Item1;
var item = pair.Item2;
var entity = Model.Entity;
var item = Model.Field;
var factory = entity.GetType().AsFactory();
var value = entity[item.Name];
@ -41,7 +37,7 @@ else
{
var key = entity[factory.Unique.Name];
var df = item as ListField;
<a lay-event="action" data-action="action" lay-data="@Url.Action("SetEnable",null,new { id=key, enable=!bval })">
<a lay-event="action" data-action="action" lay-data="@Url.Action("SetEnable", null, new { id = key, enable = !bval })">
@await Html.PartialAsync("_Icon_Boolean", bval)
</a>
}
@ -151,7 +147,7 @@ else
}
else if (item.Name.EqualIgnoreCase("CreateIP", "UpdateIP"))
{
<td title="@((value+"").IPToAddress())">@value</td>
<td title="@((value + "").IPToAddress())">@value</td>
}
else if (item.IsBigText())
{

View File

@ -1,114 +0,0 @@
@model ValueTuple<IEntity, DataField>
@using NewLife;
@using NewLife.Cube
@using NewLife.Cube.ViewModels;
@using XCode;
@using XCode.Configuration;
@{
var entity = Model.Item1;
var item = Model.Item2;
var fields = ViewBag.Fields as FieldCollection;
var dataField = fields.GetField(item.Name) as ListField;
var dataSource = dataField?.DataSource;
var err = 0;
if (ViewData.ModelState.TryGetValue(item.Name, out var st) && st != null) { err = st.Errors.Count; }
var des = item.Description.TrimStart(item.DisplayName).TrimStart(",", ".", "", "。");
var display = dataField?.DisplayName ?? item.DisplayName;
var total = 12;
var label = 3;
var span = 4;
if (err == 0 && des.IsNullOrEmpty())
{
span = 0;
}
else if (item.Type == typeof(Boolean) || item.Type.IsEnum)
{
span += 1;
}
var input = total - label - span;
}
<!-- 字段标签(含帮助说明信息) -->
<label class="layui-form-label">@display</label>
<div class="layui-input-block">
@if (display == "授权")
{
string sss = "";
}
<!-- 字段编辑框 -->
@if (dataSource != null)
{
@*@Html.ForListBox(item.Name, dataSource(entity, item), entity[item.Name] as String)*@
@await Html.PartialAsync("_Form_Type_ListBox", new ListBoxModel(item.Name, dataSource(entity, item), entity[item.Name]))
}
else
{
var itemModel = new ItemModel(item.Name, entity[item.Name], item.Type) { Length = item.Length };
// 系统字段默认不允许编辑,不显示
if (item.Name.EqualIgnoreCase("CreateUserID", "CreateUser", "CreateTime", "CreateIP",
"UpdateUserID", "UpdateUser", "UpdateTime", "UpdateIP", "StateCode", "StatusCode","Auditor","AuditTime","EffectiveTime","DeactivateTime","BomDetailedIDs"))
{
@*@Html.ForString(item.Name, (String)entity[item.Name], item.Length, new { @disabled = "disabled" }.ToDictionary())*@
itemModel.HtmlAttributes = new { disabled = "disabled" };
@await Html.PartialAsync("_Form_Type_String", itemModel)
}
else
{
@*@Html.ForEditor(item, entity)*@
if (!item.MapField.IsNullOrEmpty() && item.MapProvider != null)
{
@await Html.PartialAsync("_Form_Type_Map", Model)
}
else if (item.Readonly)
{
@await Html.PartialAsync("_Form_Type_String", itemModel)
<label class="layui-form-label">@entity[item.Name]</label>
}
else if (item.Type == typeof(String))
{
if (item.ItemType.EqualIgnoreCase("file", "image"))
{
@await Html.PartialAsync("_Form_Type_File", Model)
}
else
{
@*@Html.ForString(item.Name, (String)entity[item.Name], item.Length)*@
@await Html.PartialAsync("_Form_Type_String", itemModel)
}
}
else if (entity is IEntityTree treeEntity)
{
var set = entity.GetType().GetValue("Setting") as IEntityTreeSetting;
if (set == null || set.Parent != item.Name)
{
@await Html.PartialAsync("_Form_Editor", new ValueTuple<IEntity, DataField>(entity, item))
}
else
{
var root = entity.GetType().GetValue("Root") as IEntityTree;
// 找到完整菜单树,但是排除当前节点这个分支
var list = root.FindAllChildsExcept(treeEntity);
var data = new SelectList(list, set.Key, "TreeNodeText", entity[item.Name]);
@Html.DropDownList(item.Name, data, new { @class = "multiselect" })
}
}
else
{
@*@Html.ForEditor(item.Name, entity[item.Name], item.Type)*@
@await Html.PartialAsync("_Form_Editor", new ValueTuple<IEntity, DataField>(entity, item))
}
}
}
@if (err > 0)
{
<div class="layui-form-mid layui-word-aux">
@Html.ValidationMessage(item.Name)
</div>
}
</div>

View File

@ -24,7 +24,7 @@
if (!item.PrimaryKey && !item.Name.EqualIgnoreCase("Permission"))
{
@await Html.PartialAsync("_Form_Group", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_Form_Group", new EntityField(entity, item))
}
}
</div>

View File

@ -1,11 +1,11 @@
@using NewLife;
@model EntityField
@using NewLife;
@using NewLife.Cube
@using XCode;
@using XCode.Configuration;
@{
var pair = (ValueTuple<IEntity, DataField>)Model;
var entity = pair.Item1;
var field = pair.Item2;
var entity = Model.Entity;
var field = Model.Field;
var fields = ViewBag.Fields as FieldCollection;
var dataField = fields.GetField(field.Name);

View File

@ -17,7 +17,7 @@
*@
if (!item.PrimaryKey)
{
@await Html.PartialAsync("_Form_Group", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_Form_Group", new EntityField(entity, item))
}
}
</div>

View File

@ -1,10 +1,10 @@
@using NewLife;
@model EntityField
@using NewLife;
@using XCode;
@using XCode.Configuration;
@{
var pair = (ValueTuple<IEntity, DataField>)Model;
var entity = pair.Item1;
var field = pair.Item2;
var entity = Model.Entity;
var field = Model.Field;
var set = NewLife.Cube.CubeSetting.Current;
var cls = set.FormGroupClass;
@ -14,12 +14,12 @@
{
var isRow = cls.Contains("row") ? "row" : "";
<div class="form-group @(isRow) col-xs-12 col-sm-11">
@await Html.PartialAsync("_Form_BigText", (Object)Model)
@await Html.PartialAsync("_Form_BigText", Model)
</div>
}
else
{
<div class="@cls">
@await Html.PartialAsync("_Form_Item", (Object)Model)
@await Html.PartialAsync("_Form_Item", Model)
</div>
}

View File

@ -1,12 +1,12 @@
@model ValueTuple<IEntity, DataField>
@model EntityField
@using NewLife;
@using NewLife.Cube
@using NewLife.Cube.ViewModels;
@using XCode;
@using XCode.Configuration;
@{
var entity = Model.Item1;
var item = Model.Item2;
var entity = Model.Entity;
var item = Model.Field;
var fields = ViewBag.Fields as FieldCollection;
var dataField = fields.GetField(item.Name) as ListField;

View File

@ -83,7 +83,7 @@
}
else
{
@await Html.PartialAsync("_List_Data_Item", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_List_Data_Item", new EntityField(entity, item))
}
}
<td class="text-center">

View File

@ -82,7 +82,7 @@
}
else
{
@await Html.PartialAsync("_List_Data_Item", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_List_Data_Item", new EntityField(entity, item))
}
}
@if (this.Has(PermissionFlags.Detail, PermissionFlags.Update, PermissionFlags.Delete))

View File

@ -1,11 +1,11 @@
@using NewLife;
@model EntityField
@using NewLife;
@using Microsoft.AspNetCore.Routing
@using XCode;
@using XCode.Configuration;
@{
var pair = (ValueTuple<IEntity, DataField>)Model;
var entity = pair.Item1;
var item = pair.Item2;
var entity = Model.Entity;
var item = Model.Field;
var factory = entity.GetType().AsFactory();
var value = entity[item.Name];

View File

@ -59,7 +59,7 @@
<!-- 字段编辑框 -->
<div class="flex-grow-1">
@await Html.PartialAsync("_Form_Editor", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_Form_Editor", new EntityField(entity, item))
</div>
<span class="form-text text-muted d-sm-none"><span class="form-text text-muted">@des</span></span>
</div>
@ -81,7 +81,7 @@
<!-- 字段编辑框 -->
<div class="flex-grow-1">
@await Html.PartialAsync("_Form_Editor", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_Form_Editor", new EntityField(entity, item))
</div>
<span class="form-text text-muted d-sm-none"><span class="form-text text-muted">@des</span></span>
</div>

View File

@ -56,7 +56,7 @@
<!-- 字段编辑框 -->
<div class="flex-grow-1">
@await Html.PartialAsync("_Form_Editor", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_Form_Editor", new EntityField(entity, item))
</div>
<span class="form-text text-muted d-sm-none"><span class="form-text text-muted">@des</span></span>
</div>
@ -78,7 +78,7 @@
<!-- 字段编辑框 -->
<div class="flex-grow-1">
@await Html.PartialAsync("_Form_Editor", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_Form_Editor", new EntityField(entity, item))
</div>
<span class="form-text text-muted d-sm-none"><span class="form-text text-muted">@des</span></span>
</div>
@ -120,7 +120,7 @@
<!-- 字段编辑框 -->
<div class="flex-grow-1">
@await Html.PartialAsync("_Form_Editor", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_Form_Editor", new EntityField(entity, item))
</div>
<span class="form-text text-muted d-sm-none"><span class="form-text text-muted">@des</span></span>
</div>
@ -142,7 +142,7 @@
<!-- 字段编辑框 -->
<div class="flex-grow-1">
@await Html.PartialAsync("_Form_Editor", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_Form_Editor", new EntityField(entity, item))
</div>
<span class="form-text text-muted d-sm-none"><span class="form-text text-muted">@des</span></span>
</div>

View File

@ -2,11 +2,11 @@
@using NewLife.Cube
@using XCode;
@using XCode.Configuration;
@model ValueTuple<IEntity, DataField>
@model EntityField
@{
var entity = Model.Item1;
var item = Model.Item2;
var entity = Model.Entity;
var item = Model.Field;
var type = item.Type;

View File

@ -1,11 +1,11 @@
@model ValueTuple<IEntity, DataField>
@model EntityField
@using NewLife;
@using NewLife.Cube
@using XCode;
@using XCode.Configuration;
@{
var entity = Model.Item1;
var field = Model.Item2;
var entity = Model.Entity;
var field = Model.Field;
var b = entity[field.MapField].ToInt();
var fn = field.MapField.ToLower();

View File

@ -82,7 +82,7 @@
}
else
{
@await Html.PartialAsync("_List_Data_Item", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_List_Data_Item", new EntityField(entity, item))
}
}
<td class="text-center">

View File

@ -92,7 +92,7 @@
}
else
{
@await Html.PartialAsync("_List_Data_Item", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_List_Data_Item", new EntityField(entity, item))
}
}
@if (this.Has(PermissionFlags.Detail, PermissionFlags.Update, PermissionFlags.Delete))

View File

@ -1,7 +1,4 @@
@*
For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
*@
@model EntityField
@using NewLife;
@using NewLife.Cube;
@using Microsoft.AspNetCore.Routing
@ -9,9 +6,8 @@
@using XCode;
@using XCode.Configuration;
@{
var pair = (ValueTuple<IEntity, DataField>)Model;
var entity = pair.Item1;
var item = pair.Item2;
var entity = Model.Entity;
var item = Model.Field;
var factory = entity.GetType().AsFactory();
var value = entity[item.Name];

View File

@ -1,11 +1,11 @@
@using NewLife;
@model EntityField
@using NewLife;
@using NewLife.Cube
@using XCode;
@using XCode.Configuration;
@{
var pair = (ValueTuple<IEntity, DataField>)Model;
var entity = pair.Item1;
var field = pair.Item2;
var entity = Model.Entity;
var field = Model.Field;
var err = 0;
if (ViewData.ModelState.TryGetValue(field.Name, out var st) && st != null) { err = st.Errors.Count; }

View File

@ -11,7 +11,7 @@
{
if (!item.PrimaryKey)
{
@await Html.PartialAsync("_Form_Group", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_Form_Group", new EntityField(entity, item))
}
}
</div>

View File

@ -1,11 +1,11 @@
@model ValueTuple<IEntity, DataField>
@model EntityField
@using NewLife;
@using XCode;
@using XCode.Configuration;
@{
var pair = Model;
var entity = pair.Item1;
var field = pair.Item2;
var entity = pair.Entity;
var field = pair.Field;
//var set = NewLife.Cube.Setting.Current;
//var cls = set.FormGroupClass;
@ -14,14 +14,14 @@
@if (field.IsBigText())
{
<div class="form-group col-md-12">
@await Html.PartialAsync("_Form_BigText", (Object)Model)
@await Html.PartialAsync("_Form_BigText", Model)
</div>
}
else
{
<div class="col-xs-12 col-sm-6">
<div class="form-group mb-3 row">
@await Html.PartialAsync("_Form_Item", (Object)Model)
@await Html.PartialAsync("_Form_Item", Model)
</div>
</div>
}

View File

@ -1,11 +1,11 @@
@model ValueTuple<IEntity, DataField>
@model EntityField
@using NewLife;
@using NewLife.Cube
@using XCode;
@using XCode.Configuration;
@{
var entity = Model.Item1;
var item = Model.Item2;
var entity = Model.Entity;
var item = Model.Field;
var fs = ViewBag.Fields as FieldCollection;
var dataField = fs.GetField(item.Name);

View File

@ -71,7 +71,7 @@
}
else
{
@await Html.PartialAsync("_List_Data_Item", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_List_Data_Item", new EntityField(entity, item))
}
}
@if (this.Has(PermissionFlags.Detail, PermissionFlags.Update, PermissionFlags.Delete))

View File

@ -1,11 +1,11 @@
@using NewLife;
@model EntityField
@using NewLife;
@using Microsoft.AspNetCore.Routing
@using XCode;
@using XCode.Configuration;
@{
var pair = (ValueTuple<IEntity, DataField>)Model;
var entity = pair.Item1;
var item = pair.Item2;
var entity = Model.Entity;
var item = Model.Field;
var factory = entity.GetType().AsFactory();
var value = entity[item.Name];

View File

@ -132,7 +132,7 @@ public static class ViewHelper
}
@foreach (var item in fields)
{
@await Html.PartialAsync("_List_Data_Item", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_List_Data_Item", new EntityField(entity, item))
}
@if (this.Has(PermissionFlags.Detail, PermissionFlags.Update, PermissionFlags.Delete))
{
@ -463,9 +463,9 @@ public static class ViewHelper
if ((!item.PrimaryKey || item.Field != null && !item.Field.IsIdentity) && (item.DataVisible == null || item.DataVisible(entity, item)))
{
if (item is FormField formField && !formField.GroupView.IsNullOrEmpty())
@await Html.PartialAsync(formField.GroupView, new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync(formField.GroupView, new EntityField(entity, item))
else
@await Html.PartialAsync("_Form_Group", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_Form_Group", new EntityField(entity, item))
}
}
</div>
@ -482,9 +482,9 @@ public static class ViewHelper
if ((!item.PrimaryKey || item.Field != null && !item.Field.IsIdentity) && (item.DataVisible == null || item.DataVisible(entity, item)))
{
if (item is FormField formField && !formField.GroupView.IsNullOrEmpty())
@await Html.PartialAsync(formField.GroupView, new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync(formField.GroupView, new EntityField(entity, item))
else
@await Html.PartialAsync("_Form_Group", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_Form_Group", new EntityField(entity, item))
}
}
}

View File

@ -1,10 +1,10 @@
@using NewLife;
@model EntityField
@using NewLife;
@using XCode;
@using XCode.Configuration;
@{
var pair = (ValueTuple<IEntity, DataField>)Model;
var entity = pair.Item1;
var item = pair.Item2;
var entity = Model.Entity;
var item = Model.Field;
var set = NewLife.Cube.CubeSetting.Current;
var cls = set.FormGroupClass;
@ -20,6 +20,6 @@
else
{
<div class="@cls">
@await Html.PartialAsync("_Form_Item", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_Form_Item", new EntityField(entity, item))
</div>
}

View File

@ -1,12 +1,11 @@
@model ValueTuple<IEntity, DataField>
@model EntityField
@using NewLife;
@using NewLife.Cube.Entity
@using XCode;
@using XCode.Configuration;
@{
var pair = Model;
var entity = pair.Item1 as PrincipalAgent;
var field = pair.Item2;
var entity = Model.Entity as PrincipalAgent;
var field = Model.Field;
var set = NewLife.Cube.CubeSetting.Current;
var cls = set.FormGroupClass;

View File

@ -1,12 +1,12 @@
@model ValueTuple<IEntity, DataField>
@model EntityField
@using NewLife;
@using NewLife.Cube.Entity
@using XCode;
@using XCode.Configuration;
@{
var pair = Model;
var entity = pair.Item1 as PrincipalAgent;
var field = pair.Item2;
var entity = pair.Entity as PrincipalAgent;
var field = pair.Field;
var set = NewLife.Cube.CubeSetting.Current;
var cls = set.FormGroupClass;

View File

@ -0,0 +1,15 @@
using XCode;
namespace NewLife.Cube.ViewModels;
/// <summary>实体数据列模型</summary>
/// <param name="entity"></param>
/// <param name="field"></param>
public class EntityField(IEntity entity, DataField field)
{
/// <summary>实体</summary>
public IEntity Entity { get; set; } = entity;
/// <summary>数据字段</summary>
public DataField Field { get; set; } = field;
}

View File

@ -1,11 +1,11 @@
@using NewLife;
@model EntityField
@using NewLife;
@using NewLife.Cube
@using XCode;
@using XCode.Configuration;
@{
var pair = (ValueTuple<IEntity, DataField>)Model;
var entity = pair.Item1;
var field = pair.Item2;
var entity = Model.Entity;
var field = Model.Field;
var err = 0;
if (ViewData.ModelState.TryGetValue(field.Name, out var st) && st != null) { err = st.Errors.Count; }

View File

@ -29,11 +29,11 @@
{
if (item is FormField formField && !formField.GroupView.IsNullOrEmpty())
{
@await Html.PartialAsync(formField.GroupView, new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync(formField.GroupView, new EntityField(entity, item))
}
else
{
@await Html.PartialAsync("_Form_Group", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_Form_Group", new EntityField(entity, item))
}
}
}
@ -51,9 +51,9 @@ else
if ((!item.PrimaryKey || item.Field != null && !item.Field.IsIdentity) && (item.DataVisible == null || item.DataVisible(entity)))
{
if (item is FormField formField && !formField.GroupView.IsNullOrEmpty())
@await Html.PartialAsync(formField.GroupView, new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync(formField.GroupView, new EntityField(entity, item))
else
@await Html.PartialAsync("_Form_Group", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_Form_Group", new EntityField(entity, item))
}
}
}

View File

@ -1,12 +1,12 @@
@model ValueTuple<IEntity, DataField>
@model EntityField
@using NewLife;
@using NewLife.Cube
@using System.Text;
@using XCode;
@using XCode.Configuration;
@{
var entity = Model.Item1;
var field = Model.Item2;
var entity = Model.Entity;
var field = Model.Field;
var value = entity[field.Name] as String;

View File

@ -1,12 +1,11 @@
@model ValueTuple<IEntity, DataField>
@model EntityField
@using NewLife;
@using NewLife.Cube.ViewModels
@using XCode;
@using XCode.Configuration;
@{
var pair = Model;
var entity = pair.Item1;
var field = pair.Item2;
var entity = Model.Entity;
var field = Model.Field;
var set = NewLife.Cube.CubeSetting.Current;
var cls = set.FormGroupClass;
@ -15,18 +14,18 @@
@if (field.DataSource != null || !field.MapField.IsNullOrEmpty() || field.IsAttachment())
{
<div class="@cls">
@await Html.PartialAsync("_Form_Item", (Object)Model)
@await Html.PartialAsync("_Form_Item", Model)
</div>
}
else if (field.IsBigText())
{
<div class="form-group col-xs-12 col-sm-12">
@await Html.PartialAsync("_Form_BigText", (Object)Model)
@await Html.PartialAsync("_Form_BigText", Model)
</div>
}
else
{
<div class="@cls">
@await Html.PartialAsync("_Form_Item", (Object)Model)
@await Html.PartialAsync("_Form_Item", Model)
</div>
}

View File

@ -1,11 +1,11 @@
@model ValueTuple<IEntity, DataField>
@model EntityField
@using NewLife;
@using NewLife.Cube
@using XCode;
@using XCode.Configuration;
@{
var entity = Model.Item1;
var field = Model.Item2;
var entity = Model.Entity;
var field = Model.Field;
var value = entity[field.Name] as String;

View File

@ -1,4 +1,4 @@
@model ValueTuple<IEntity, DataField>
@model EntityField
@using NewLife;
@using NewLife.Cube
@using NewLife.Data;
@ -6,8 +6,8 @@
@using XCode.Configuration;
@using System.Collections;
@{
var entity = Model.Item1;
var item = Model.Item2;
var entity = Model.Entity;
var item = Model.Field;
var fs = ViewBag.Fields as FieldCollection;
var dataField = fs.GetField(item.Name);

View File

@ -1,11 +1,11 @@
@model ValueTuple<IEntity, DataField>
@model EntityField
@using NewLife;
@using NewLife.Cube
@using XCode;
@using XCode.Configuration;
@{
var entity = Model.Item1;
var field = Model.Item2;
var entity = Model.Entity;
var field = Model.Field;
var fs = ViewBag.Fields as FieldCollection;
var set = NewLife.Cube.CubeSetting.Current;

View File

@ -81,7 +81,7 @@
}
else
{
@await Html.PartialAsync("_List_Data_Item", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_List_Data_Item", new EntityField(entity, item))
}
}
<td class="text-center">

View File

@ -71,7 +71,7 @@
}
else
{
@await Html.PartialAsync("_List_Data_Item", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_List_Data_Item", new EntityField(entity, item))
}
}
@if (this.Has(PermissionFlags.Detail, PermissionFlags.Update, PermissionFlags.Delete))

View File

@ -1,11 +1,11 @@
@using NewLife;
@model EntityField
@using NewLife;
@using Microsoft.AspNetCore.Routing
@using XCode;
@using XCode.Configuration;
@{
var pair = (ValueTuple<IEntity, DataField>)Model;
var entity = pair.Item1;
var item = pair.Item2;
var entity = Model.Entity;
var item = Model.Field;
var factory = entity.GetType().AsFactory();
var value = entity[item.Name];

View File

@ -73,7 +73,7 @@
}
else
{
@await Html.PartialAsync("_List_Data_Item", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_List_Data_Item", new EntityField(entity, item))
}
}
</tr>

View File

@ -64,7 +64,7 @@
}
else
{
@await Html.PartialAsync("_List_Data_Item", new ValueTuple<IEntity, DataField>(entity, item))
@await Html.PartialAsync("_List_Data_Item", new EntityField(entity, item))
}
}
@if (this.Has(PermissionFlags.Detail, PermissionFlags.Update, PermissionFlags.Delete))

View File

@ -1,11 +1,11 @@
@using NewLife;
@model EntityField
@using NewLife;
@using Microsoft.AspNetCore.Routing
@using XCode;
@using XCode.Configuration;
@{
var pair = (ValueTuple<IEntity, DataField>)Model;
var entity = pair.Item1;
var item = pair.Item2;
var entity = Model.Entity;
var item = Model.Field;
var factory = entity.GetType().AsFactory();
var value = entity[item.Name];
@ -32,13 +32,13 @@ else
var key = entity[factory.Unique.Name];
if (bval)
{
<a href="@Url.Action("SetEnable",null,new { id=key, enable=false })" data-action="action">
<a href="@Url.Action("SetEnable", null, new { id = key, enable = false })" data-action="action">
<i class="glyphicon glyphicon-ok" style="color: green;"></i>
</a>
}
else
{
<a href="@Url.Action("SetEnable",null,new { id=key, enable=true })" data-action="action">
<a href="@Url.Action("SetEnable", null, new { id = key, enable = true })" data-action="action">
<i class="glyphicon glyphicon-remove" style="color: red;"></i>
</a>
}
@ -165,7 +165,7 @@ else
}
else if (item.Name.EqualIgnoreCase("CreateIP", "UpdateIP"))
{
<td title="@((value+"").IPToAddress())">@value</td>
<td title="@((value + "").IPToAddress())">@value</td>
}
else if (item.IsBigText())
{