Open jxzly229190 opened 3 years ago
我认为,如果将现有代码生成改为利用Razer机制,是比直接拼接字符串更好的选择。理由如下:
基于此,我做了些简单的尝试。
namespace YiSha.Entity.@Html.Raw(Model.Package) { /// <summary> /// 创 建: /// 日 期: /// 描 述:@Html.Raw(Model.FName)实体类 /// </summary> [Table("@Html.Raw(Model.CName)")] public class @Html.Raw(Model.CName)Entity : BaseExtensionEntity { @foreach (var item in Model.Columns) { @:/// <summary> @:/// @Html.Raw(item.Name) @:/// </summary> @:public @Html.Raw(item.Datatype) @Html.Raw(item.TableColumn) { get; set; } } } }
private async Task<string> GenerateCode(string viewName, string codePath, TableInfoDto table) { var html = await this.RenderViewAsync(viewName, table, true); if (!System.IO.File.Exists(codePath)) { FileHelper.CreateFile(codePath, html); } return html; }
public async Task<string> RenderViewAsync<TModel>(string viewName, TModel model, bool partial = false) { if (string.IsNullOrEmpty(viewName)) { viewName = ControllerContext.ActionDescriptor.ActionName; } ViewData.Model = model; using (var writer = new StringWriter()) { IViewEngine viewEngine = HttpContext.RequestServices.GetService(typeof(ICompositeViewEngine)) as ICompositeViewEngine; ViewEngineResult viewResult = viewEngine.FindView(ControllerContext, viewName, !partial); if (viewResult.Success == false) { return $"A view with the name {viewName} could not be found"; } ViewContext viewContext = new ViewContext( ControllerContext, viewResult.View, ViewData, TempData, writer, new HtmlHelperOptions() ); await viewResult.View.RenderAsync(viewContext); return writer.GetStringBuilder().ToString(); } }
若有兴趣,请加我微信(jxzly229190),进一步讨论。
使用Razor可能会好,使用字符串拼接方式的好处是没有任何依赖,你有兴趣,可以自己研究。
我认为,如果将现有代码生成改为利用Razer机制,是比直接拼接字符串更好的选择。理由如下:
基于此,我做了些简单的尝试。
模板文件(Entity.cshtml):
核心代码如下: