在Ui-O-Matic Umbraco中使用UIOMaticField或后台控件

时间:2017-04-12 13:38:41

标签: asp.net-mvc umbraco umbraco7 umbraco6 umbraco-contour

我是Umbraco CMS的新手。我在我的项目中使用了Ui-O-Matic插件 Ui-O-Matic允许数据库轻松进行CRUD操作。但我想使用backoffice控件,如file,textarea等。

所以我在database.cs文件中使用这样的UIOMaticFielld。

 [Column("newsDetail")]
 [UIOMaticField("News Detail","Add Details",View ="textarea")]
 public string newsDetail { get; set; }

 [Column("newsImage")]
 [UIOMaticField("Image","Upload Image",View ="file")]
 public string newsImage { get; set; }

问题是当我在数据库中进行任何更改时,我必须刷新database.tt文件以获取数据库更改。但它重新创建了database.cs文件和我以前的更改:

[UIOMaticField("News Detail","Add Details",View ="textarea")]

从database.cs文件中删除。每次我都要做同样的改变 请指导我该怎么办保持我的自定义更改即使我刷新database.tt文件?
其他更好的做CRUD操作的方法也是可取的。

1 个答案:

答案 0 :(得分:1)

经过google搜索后,我发现当database.cs文件是自动生成的时候,我不能在其中进行自定义更改。
我找到了另一种使用后台控件的方法。让我在这里解释一下,可能对其他人有所帮助。

而不是在databse.cs文件中编写UIOMatoicField,创建模型来做同样的事情。
在“Models / Generated / database.tt”文件中进行以下更改

// Settings 
    ConnectionStringName = "umbracoDbDSN";          // Uses last connection string in config if not specified
    Namespace = "Generator";
    RepoName = "";
    GeneratePocos = true;
    ClassPrefix = "";  
    ClassSuffix = "";  

    // Read schema 
    var tables = LoadTables();  
    tables["Course"].Ignore = true; // Prevents table to include in databse.cs file  
    tables["News"].Ignore = true; 
if (tables.Count>0)
    {
#>
<#@ include file="UIOMatic.Generator.ttinclude" #>
<# } #>

然后创建新模型,如下所示。对于前者“Models \ NewsModel.cs”

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using UIOMatic.Attributes;
using UIOMatic.Enums;
using UIOMatic.Interfaces;
using Umbraco.Core.Persistence;
using Umbraco.Core.Persistence.DatabaseAnnotations;

namespace EdumentUIOMatic.Models
{
    [Umbraco.Core.Persistence.TableName("News")]
    [PrimaryKey("newsId")]
    [UIOMatic("News", "icon-box-open", "icon-box-open", RenderType = UIOMaticRenderType.List, ConnectionStringName = "umbracoDbDSN")]   
    public class NewsModel: IUIOMaticModel
    {
        [UIOMaticIgnoreField]
        [Column("newsId")]
        public int newsId { get; set; }

        [Column("newsTitle")]
        [UIOMaticField("News Title", "Add Title")]
        public string newsTitle { get; set; }

        [Column("newsDetail")]
        [UIOMaticField("News Detail", "Add Details", View = "textarea")]
        public string newsDetail { get; set; }

        [Column("newsImage")]
        [UIOMaticField("Image", "Upload Image", View = "file")]
        public string newsImage { get; set; }



        [Column("isDeleted")]
        [UIOMaticField("Hide News", "Check if you want to hide this news")]        
        public bool isDeleted { get; set; }



        [System.Web.Http.AcceptVerbs("GET", "POST")]
        public IEnumerable<Exception> Validate()
        {
            return new List<Exception>();
        }
    }
}

现在,如果您要重新加载database.tt文件以获取更新的数据库,则不会删除您的代码。