Ich wollte in meinem Code iienumerable integrieren, so dass es readonly ist, aber ich weiß nicht, wo es möglicherweise implementiert werden soll. Bisher habe ich keine Lösung im Internet gefunden, die mein Problem lösen könnte. Ab sofort habe ich nur List verwendet und wollte in meinem Code imenumerable integrieren. Fühlen Sie sich auch frei, etwas zu empfehlen, wenn Sie schlechte Programmierpraktiken bemerken. HierSo geben Sie eine schreibgeschützte IEnumerable <T> statt einer Liste zurück <T>
ist der Code:
public static List<GuitarItems> GetGuitarItems(string itemCategory)
{
List<GuitarItems> list = new List<GuitarItems>();
string query = string.Format("SELECT * FROM guitarItems WHERE brand LIKE @brand");
try
{
conn1.Open();
command1.CommandText = query;
command1.Parameters.Add(new SqlParameter("brand", itemCategory));
SqlDataReader reader = command1.ExecuteReader();
while (reader.Read())
{
int id = reader.GetInt32(0);
string type = reader.GetString(1);
string brand = reader.GetString(2);
string model = reader.GetString(3);
double price = reader.GetDouble(4);
string itemimage1 = reader.GetString(5);
string itemimage2 = reader.GetString(6);
string description = reader.GetString(7);
string necktype = reader.GetString(8);
string body = reader.GetString(9);
string fretboard = reader.GetString(10);
string fret = reader.GetString(11);
string bridge = reader.GetString(12);
string neckpickup = reader.GetString(13);
string bridgepickup = reader.GetString(14);
string hardwarecolor = reader.GetString(15);
GuitarItems gItems = new GuitarItems(id, type, brand, model, price, itemimage1, itemimage2, description, necktype, body,
fretboard, fret, bridge, neckpickup, bridgepickup, hardwarecolor);
list.Add(gItems);
}
}
finally
{
conn1.Close();
command1.Parameters.Clear();
}
return list;
}
Und dann ist hier ein anderer Code:
private void FillPage()
{
List<GuitarItems> itemList = new List<GuitarItems>();
List<string> itemListPage = new List<string>();
itemList = ConnectionClassGuitarItems.GetGuitarItems(brandType);
StringBuilder sb = new StringBuilder();
foreach (GuitarItems gList in itemList)
{
itemListPage.Add("GuitarItemsIbanezDetails" + (x + 1) + ".aspx");
sb.Append(
string.Format(
@"
<div class='one-two'>
<a href='{3}' runat="'server'"><img runat="'server'" src='{0}'/></a>
<div class='content'>
<div id='label'>{1} {2}</div>
</div>
</div>", gList.ItemImage1, gList.Brand, gList.Model, itemListPage[x]));
x++;
}
lblOutput.Text = sb.ToString();
}
Sie haben eine XSS-Sicherheitsanfälligkeit. Und Sie können serverseitige Steuerelemente nicht so erstellen. Sie sollten Datenbindung verwenden. – SLaks
@SLaks - Was passiert, wenn ich einen Code hinzufüge, der die Benutzereingabe aufheben wird, wenn es Script-Tags gibt? wird das helfen, die XSS-Schwachstelle zu beseitigen? –
Nein. Sie müssen etwas über _encoding_ erfahren. – SLaks