C# 如何改进以下代码
如果有可能改进以下代码,我会喜欢它 我必须在我的页面上下拉列表(显示每个类别),一个用于过滤帖子,另一个用于创建新帖子。代码如下:C# 如何改进以下代码,c#,asp.net,C#,Asp.net,如果有可能改进以下代码,我会喜欢它 我必须在我的页面上下拉列表(显示每个类别),一个用于过滤帖子,另一个用于创建新帖子。代码如下: if (!IsPostBack) { ddlCategory.DataSource = BindDDlCategory(); if (!IsPostBack) { ddlCategory.DataTextField = "Name";
if (!IsPostBack)
{
ddlCategory.DataSource = BindDDlCategory();
if (!IsPostBack)
{
ddlCategory.DataTextField = "Name";
ddlCategory.DataValueField = "Id";
}
ddlCategory.DataBind();
if (ddlCategory.Items.Count == 0)
ddlCategory.Items.Insert(0, new ListItem("Não há nenhuma categoria cadastrada", "108", true));
else
ddlCategory.Items.Insert(0, new ListItem("Todas as categorias", "108", true));
ddlCategoryNP.DataSource = BindDDlCategory();
if (!IsPostBack)
{
ddlCategoryNP.DataTextField = "Name";
ddlCategoryNP.DataValueField = "Id";
}
ddlCategoryNP.DataBind();
if (ddlCategoryNP.Items.Count == 0)
ddlCategoryNP.Items.Insert(0, new ListItem("Não há nenhuma categoria cadastrada", "108", true));
else
ddlCategoryNP.Items.Insert(0, new ListItem("Escolha uma categoria", "108", true));
}
分类的方法是:
protected DataTable BindDDlCategory()
{
Read readCategoryNP = new Read();
return readCategoryNP.Category();
}
readCategoryNP显示数据库中的DataTable 您的方法中有两个代码块执行绑定,它们与正在操作的ddl不同。为什么不创建一个将ddl作为参数的方法,然后对其应用绑定呢。DRY:)我同意@Kemal的观点,这应该在代码审查中进行。这是我的2美分:
-- your code, reduced
if (!IsPostBack)
{
var dataSource = BindDDlCategory();
PrepareDDL(ddlCategory, dataSource);
PrepareDDL(ddlCategoryNP, dataSource);
}
-- new method
private void PrepareDDL(DropDownList ddl, DataTable dataSource)
{
ddl.DataSource = dataSource;
ddl.DataTextField = "Name";
ddl.DataValueField = "Id";
ddl.DataBind();
string message = ddl.Items.Count
? "Não há nenhuma categoria cadastrada"
: "Todas as categorias";
ddl.Items.Insert(0, new ListItem(message, "108", true));
}
-- and the existing method
protected DataTable BindDDlCategory()
{
return new Read().Category();
}
也许:
if(!IsPostBack)
{
BindCategory();
}
受保护的无效BindCategory()
{
ddlcontegory.DataSource=binddlcontegory();
ddlcontegory.DataTextField=“Name”;
ddlcontegory.DataValueField=“Id”;
ddlcontegory.DataBind();
字符串aditionalItem=(ddlcegory.Items.Count==0)?“Não hánenhuma categoria cadastrada”:“Todas as categorias”
ddlcography.Items.Insert(0,新列表项(aditionalItem,“108”,true));
//由于两者都是相等的,请在此处绑定以避免再次调用binddlcontegory():
ddlCategoryNP.DataSource=binddlcontegory();
ddlCategoryNP.DataTextField=“Name”;
ddlCategoryNP.DataValueField=“Id”;
ddlCategoryNP.DataBind();
ddlCategoryNP.Items.Insert(0,新列表项(aditionalItem,“108”,true));
}
你应该使用代码评审:我不知道代码评审。我的错误。谢谢。如果你想重新发布,请确保包括工作代码和一些示例。