gpt4 book ai didi

c# - 在 asp.net 中获取控件的更好、更强类型的方法?

转载 作者:行者123 更新时间:2023-11-30 20:08:40 25 4
gpt4 key购买 nike

我有以下功能:

public void rpSearchResults_ItemDataBound(Object Sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
System.Data.Common.DbDataRecord rd = (System.Data.Common.DbDataRecord)e.Item.DataItem;

Literal litCompanyName = (Literal)e.Item.FindControl("litCompanyName");
Literal litCompanyLocation = (Literal)e.Item.FindControl("litCompanyLocation");
Literal litCompanyActivity = (Literal)e.Item.FindControl("litCompanyActivity");
HiddenField hdnUserID = (HiddenField)e.Item.FindControl("hdnUserID");
HyperLink lnkEmail = (HyperLink)e.Item.FindControl("lnkEmail");
HyperLink lnkMicrosite = (HyperLink)e.Item.FindControl("lnkMicrosite");
Literal litRecommends = (Literal)e.Item.FindControl("litRecommends");

litCompanyName.Text = rd["CompanyName"].ToString();

// Construct location info
litCompanyLocation.Text = "";
string[] addressParts = {"City","Region","Postcode"};
bool prior = false;
foreach (String part in addressParts){
if (prior) litCompanyLocation.Text = litCompanyLocation.Text + ", ";

string addressBit = rd[part].ToString();
if (addressBit == null || addressBit.Trim() == "") prior = false;
else
{
litCompanyLocation.Text = litCompanyLocation.Text + rd[part].ToString();
prior = true;
}
}

// ... and so on, mapping stuff from the database to fields.
}
}

它由我的 Repeater 上的事件触发,用于填充搜索结果列表。找到的所有各种控件都存在于中继器的项目模板中。

这一切都有效,但我讨厌必须这样做。我讨厌必须按字符串搜索控件,我讨厌必须进行强制转换才能使控件进入我可以操纵的状态。如果出现任何问题——例如,如果我打错了字——错误只会在运行时发现,而且通常很难追踪,因为这些函数似乎会悄无声息地失败,而不是创建一个明显的大错误页面.

这段代码现在已经写好了,而且可以工作。但是将来我想用一种强类型的不同方式来编写它,这样任何错误都会在编译时被发现。有什么办法吗?

最佳答案

您可以将所有控件放入强类型自定义控件(包括 ASCX 用户控件)中,并且只需使用一次 FindControl():

CustomControl myControl= (CustomControl) e.Item.FindControl("oMyControl");

myControl.litCompanyName.Text = rd["CompanyName"].ToString();

关于c# - 在 asp.net 中获取控件的更好、更强类型的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6865339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com