Здравствуйте, Vox, Вы писали:
Vox>пользователь может сохранить url например как http://www.asp.net в этом случае все нормально, переходишь на http://www.asp.net, а вот если пользователь сохранит просто как www.asp.net то сразу проблема, ссылка переходит на http://.../.../Web/WebControl/www.asp.net, а мне нужно чтобы ссылка переходила на http://www.asp.net или www.asp.net Vox>
Если сохраняются ссылки на конкретные сайты, то заставь пользователей указывать так или иначе этот 'http' или что-то там еще, например, путем выбора из выпадающего списка. Или подставляй 'http://' при сохранении.
PS. В поля ввода вечно пытаются записать какую-то дрянь.
Лучше контролировать сразу поля ввода (где юзер вводит ссылку руками). Если есть возможность, надо сделать валидацию ссылки, которую передал юзер в поле при сохранении, если нет http префикса — добавить его, ну и т.п. Не давать сохранять в базу мусор (reg-exp валидатор юзануть, отклонять непрошедшие значения). Тогда в базе будут лежать верифицированные URL в одном формате и не будет проблем потом с использованием этих данных потом.
Здравствуйте, Davader, Вы писали:
D>Здравствуйте, Vox, Вы писали:
D>Лучше контролировать сразу поля ввода (где юзер вводит ссылку руками). Если есть возможность, надо сделать валидацию ссылки, которую передал юзер в поле при сохранении, если нет http префикса — добавить его, ну и т.п. Не давать сохранять в базу мусор (reg-exp валидатор юзануть, отклонять непрошедшие значения). Тогда в базе будут лежать верифицированные URL в одном формате и не будет проблем потом с использованием этих данных потом.
Не хотелось бы ограничивать юзера, т.е. сохранять я должен по любому и без префикса. Отображать сохраненные данные об Url-е так как сохранил юзер, а redirect если нет http:// — добавить его. Каким образом NavigateUrl='<%#Eval("WebSite") %>'
Заранее спасибо.
Здравствуйте, 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;
}
Таким образом ссылки всегда будут с http:// в начале, но это ничего не гарантирует на предмет того, что все URL будут рабочими и валидными. Гораздо лучше все-таки делать валидацию при пользовательском вводе, чем парсить введенный мусор потом.
Здравствуйте, Davader, Вы писали:
D>reg-exp валидатор юзануть, отклонять непрошедшие значения
Неправильный подход — нужно принимать подходящие, а не отклонять неподходящие. Ибо первое множество всегда чётко определено, а второе имеет тенденцию к неконтролируемому расширению... В общем, "политика по умолчанию" должна быть "не принимать".