webForumDet fria alternativet

Placering av enum i 3-skiktsmodell

.NET

2 svar · 616 visningar · startad av doggelito

Medlem sedan juni 20003 076 inlägg
Frågan#1

En dropdowlist ska bindas.
aspx:

        IList<Category> categories = Bll.GetCategories(IncludeRootCategory.Yes);
        DropDownList parent = (DropDownList)fvCategory.FindControl("Parent");
        parent.DataSource = categories;
        parent.DataTextField = "Name";
        parent.DataValueField = "Id";
        parent.DataBind();

bll:

public IList<Category> GetCategories(IncludeRootCategory includeRootCategory)
{
        CategoryDao dao = new CategoryDao();
        return dao.GetCategories(includeRootCategory);
}

[b]public enum IncludeRootCategory
{
        Yes,
        No
}[/b]

dao:

public IList<Category> GetCategories([b]bool[/b] includeRootCategory)
{
        IList<Category> categoryList = CurrentSession.CreateCriteria(typeof(Category)).List<Category>();

        if (!includeRootCategory)
                categoryList.RemoveAt(0);

        return categoryList;
}

aspx --> bll --> dao

Problemet/felet med koden är att metoden i dao tar emot en bool medans metoden i bll skickar och tar emot en IncludeRootCategory.
Kan jag möblera om så att IncludeRootCategory kan användas genom hela kedjan?

En dålig lösning skulle vara att flytta enumen till dao men det betyder då att aspx måste ha en koppling dit på detta vis:

IList<Category> categories = Bll.GetCategories(CategoryDao.IncludeRootCategory.Yes);

alt. att låta enumen vara i bll och låta dao har åtkomst dit.

En annan variant är att göra en switch i bll som kollar IncludeRootCategory och sedan skickar vidare en bool beroende på värde men det känns heller inte korrekt!

Så wF:ar, hur bör jag göra? :)

Medlem sedan dec. 19996 522 inlägg
#2

Du exponerar ju dina domänobjekt som Category i aspx:en, lägg enumen där du har dina domänobjekt

Medlem sedan juni 20003 076 inlägg
#3

Ahh, så klart! Tack erka. :bire

243 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
117 ms — ändringar (db)