Здравствуйте, vox2000, Вы писали:
V>Здравствуйте, Davader, Вы писали:
D>>Здравствуйте, Vox, Вы писали:
D>>Лучше контролировать сразу поля ввода (где юзер вводит ссылку руками). Если есть возможность, надо сделать валидацию ссылки, которую передал юзер в поле при сохранении, если нет http префикса — добавить его, ну и т.п. Не давать сохранять в базу мусор (reg-exp валидатор юзануть, отклонять непрошедшие значения). Тогда в базе будут лежать верифицированные URL в одном формате и не будет проблем потом с использованием этих данных потом.
V>Не хотелось бы ограничивать юзера, т.е. сохранять я должен по любому и без префикса. Отображать сохраненные данные об Url-е так как сохранил юзер, а redirect если нет http:// — добавить его. Каким образом NavigateUrl='<%#Eval("WebSite") %>'
V>Заранее спасибо.
Ну, если надо именно на клиенткой стороне работать с "мусорными" URL и нельзя юзать валидацию при вводе, то придется делать парсер твоего Eval("WebSite"). Например, если проблнма только лишь в http (хотя врят ли она только в этом), но можно сделать так:
серверная функция
protected string TransformURL(object urlFromDB)
{
//проверка на DBNull и то, что это String подразумевается, сам напишешь ее
string url = urlFromDB.ToString();
//проверяет только на префикс http !
return url.StartsWith("http://") ? url : "http://" + url;
}
эту функицю вызываешь в шаблоне биндинга:
NavigateUrl='<%# TransformURL(Eval("WebSite")) %>'
Таким образом ссылки всегда будут с
http:// в начале, но это ничего не гарантирует на предмет того, что все URL будут рабочими и валидными. Гораздо лучше все-таки делать валидацию при пользовательском вводе, чем парсить введенный мусор потом.