54 lines
2.4 KiB
C#
54 lines
2.4 KiB
C#
![]() |
using Microsoft.AspNetCore.Mvc;
|
|||
|
using Microsoft.EntityFrameworkCore;
|
|||
|
using System;
|
|||
|
using System.Data;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using System.Threading.Tasks;
|
|||
|
using VOL.Core.DBManager;
|
|||
|
using VOL.Core.EFDbContext;
|
|||
|
using VOL.Core.Extensions;
|
|||
|
using VOL.Entity.DomainModels;
|
|||
|
|
|||
|
namespace VOL.Core.BaseProvider.DictionaryComponent
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 组件视图,参照:https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-components?view=aspnetcore-2.1
|
|||
|
/// 与Controller命名一样必须以ViewComponent结尾
|
|||
|
/// </summary>
|
|||
|
public class DictionaryViewComponent : ViewComponent
|
|||
|
{
|
|||
|
public async Task<IViewComponentResult> InvokeAsync(string dropDownIds)
|
|||
|
{
|
|||
|
if (string.IsNullOrEmpty(dropDownIds))
|
|||
|
return null;
|
|||
|
|
|||
|
string[] dicNos = dropDownIds.Split(',');
|
|||
|
StringBuilder stringBuilder = new StringBuilder();
|
|||
|
VOLContext context = DBServerProvider.GetEFDbContext();
|
|||
|
var dicData = await (from d in context.Set<Sys_Dictionary>()
|
|||
|
join list in context.Set<Sys_DictionaryList>()
|
|||
|
on d.Dic_ID equals list.Dic_ID
|
|||
|
into t
|
|||
|
from list in t.DefaultIfEmpty()
|
|||
|
where dicNos.Contains(d.DicNo)
|
|||
|
select new { list.DicValue, list.DicName, d.Config, d.DbSql, list.OrderNo, d.DicNo }).ToListAsync();
|
|||
|
|
|||
|
foreach (var item in dicData.GroupBy(x => x.DicNo))
|
|||
|
{
|
|||
|
stringBuilder.AppendLine($" var optionConfig{item.Key} = {item.Select(x => x.Config).FirstOrDefault()}");
|
|||
|
|
|||
|
string dbSql = item.Select(s => s.DbSql).FirstOrDefault();
|
|||
|
|
|||
|
stringBuilder.AppendLine($@" var dataSource{item.Key} = {(!string.IsNullOrEmpty(dbSql)
|
|||
|
? DBServerProvider.GetSqlDapper().QueryList<object>(dbSql, null).Serialize()
|
|||
|
: item.OrderByDescending(o => o.OrderNo).
|
|||
|
Select(s => new { s.DicName, s.DicValue }).ToList()
|
|||
|
.Serialize())}.convertToValueText(optionConfig{item.Key})");
|
|||
|
stringBuilder.AppendLine($" optionConfig{item.Key}.data = dataSource{item.Key};");
|
|||
|
}
|
|||
|
ViewBag.Dic = stringBuilder.ToString();
|
|||
|
return View("~/Views/Shared/Dictionary.cshtml");
|
|||
|
}
|
|||
|
}
|
|||
|
}
|