По соображениям безопасности я в конечном итоге использовал внешние .csv-файлы, чтобы удерживать язык для выпадающих списков.
Мой .csv файл выглядит следующим образом ...
ID,Col1_english,Col1_irish
0,-- Select an option --,-- Roghnaigh --
64,Suggestion,Moladh a dhéanamh
59,Complaint,Gearán
61,Praise,Moladh a thabhairt
Я использую его заселить DropDownList1 как это ...
DropDownList1.DataSource = new DataSet().GetDataFromCSV("Sentiments",Server.MapPath(my_CSV_path));
DropDownList1.DataValueField = "ID";
DropDownList1.DataTextField = "Col1_english";
Метод расширения GetDataFromCSV ...
public static DataSet GetDataFromCSV(this DataSet ds, string data_table_name,string csv_file_path)
{
string strLine;
string[] strArray;
char[] charArray = new char[] {','};
DataTable dt = ds.Tables.Add(data_table_name);
FileStream aFile = new FileStream(csv_file_path,FileMode.Open);
StreamReader sr = new StreamReader(aFile);
strLine = sr.ReadLine();
strArray = strLine.Split(charArray);
for(int x=0;x<=strArray.GetUpperBound(0);x++)
{
dt.Columns.Add(strArray[x].Trim());
}
strLine = sr.ReadLine();
while(strLine != null) {
strArray = strLine.Split(charArray);
DataRow dr = dt.NewRow();
for(int i=0;i<=strArray.GetUpperBound(0);i++)
{
dr[i] = strArray[i].Trim();
}
dt.Rows.Add(dr);
strLine = sr.ReadLine();
}
sr.Close();
return ds;
}
во время Page_Load
Затем я прочитал от CurrentCulture
и включил DropDownList1.DataTextField
соответственно.
Это не изящно, но хорошо работает, потому что мне нужны нетехнические люди, чтобы держать текст DropDownList и переводы, обновлять и не использовать базу данных.
Thanks @Saminda & @Sam - вы были на правильном пути к этому неуловимому элегантному решению.
Это полезно, но это больше того, что я искал ... http://www.devtrends.co.uk/blog/programmatically-retrieving-items-from-resource-files-in-.net My собственная ошибка - я должен быть более явным при допросе. – cymorg