HyperLink NavigateUrl без http://
От: Vox  
Дата: 15.04.08 01:10
Оценка:
пользователь может сохранить 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
<asp:HyperLink ID="hrlWebSite" runat="server" EnableViewState="false" NavigateUrl='<%#Eval("WebSite") %>' Target="_blank" >
                                                        <%#Eval("WebSite") %>
                                                    </asp:HyperLink>

Спасибо.
Re: HyperLink NavigateUrl без http://
От: denaturat  
Дата: 15.04.08 05:53
Оценка:
Здравствуйте, 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>
Vox><asp:HyperLink ID="hrlWebSite" runat="server" EnableViewState="false" NavigateUrl='<%#Eval("WebSite") %>' Target="_blank" >
Vox>                                                        <%#Eval("WebSite") %>
Vox>                                                    </asp:HyperLink>
Vox>

Vox>Спасибо.

Если сохраняются ссылки на конкретные сайты, то заставь пользователей указывать так или иначе этот 'http' или что-то там еще, например, путем выбора из выпадающего списка. Или подставляй 'http://' при сохранении.

PS. В поля ввода вечно пытаются записать какую-то дрянь.
Re: HyperLink NavigateUrl без http://
От: Davader Россия  
Дата: 15.04.08 16:29
Оценка: +1
Здравствуйте, Vox, Вы писали:

Лучше контролировать сразу поля ввода (где юзер вводит ссылку руками). Если есть возможность, надо сделать валидацию ссылки, которую передал юзер в поле при сохранении, если нет http префикса — добавить его, ну и т.п. Не давать сохранять в базу мусор (reg-exp валидатор юзануть, отклонять непрошедшие значения). Тогда в базе будут лежать верифицированные URL в одном формате и не будет проблем потом с использованием этих данных потом.
Re[2]: HyperLink NavigateUrl без http://
От: vox2000  
Дата: 15.04.08 23:58
Оценка:
Здравствуйте, Davader, Вы писали:

D>Здравствуйте, Vox, Вы писали:


D>Лучше контролировать сразу поля ввода (где юзер вводит ссылку руками). Если есть возможность, надо сделать валидацию ссылки, которую передал юзер в поле при сохранении, если нет http префикса — добавить его, ну и т.п. Не давать сохранять в базу мусор (reg-exp валидатор юзануть, отклонять непрошедшие значения). Тогда в базе будут лежать верифицированные URL в одном формате и не будет проблем потом с использованием этих данных потом.

Не хотелось бы ограничивать юзера, т.е. сохранять я должен по любому и без префикса. Отображать сохраненные данные об Url-е так как сохранил юзер, а redirect если нет http:// — добавить его. Каким образом NavigateUrl='<%#Eval("WebSite") %>'
Заранее спасибо.
Re[3]: HyperLink NavigateUrl без http://
От: Davader Россия  
Дата: 16.04.08 15:40
Оценка:
Здравствуйте, 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 будут рабочими и валидными. Гораздо лучше все-таки делать валидацию при пользовательском вводе, чем парсить введенный мусор потом.
Re[3]: HyperLink NavigateUrl без http://
От: Aikin Беларусь kavaleu.ru
Дата: 17.04.08 05:37
Оценка:
Davader не говорит, что нжуно пользователя ограничивать. Можно исправить URL после ввода пользователя, но до того как он попадет в базу
... << RSDN@Home 1.2.0 alpha 4 rev. 1067>>
Re[2]: HyperLink NavigateUrl без http://
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 19.04.08 01:52
Оценка:
Здравствуйте, Davader, Вы писали:

D>reg-exp валидатор юзануть, отклонять непрошедшие значения


Неправильный подход — нужно принимать подходящие, а не отклонять неподходящие. Ибо первое множество всегда чётко определено, а второе имеет тенденцию к неконтролируемому расширению... В общем, "политика по умолчанию" должна быть "не принимать".
[КУ] оккупировала армия.
Re: HyperLink NavigateUrl без http://
От: Vox  
Дата: 19.04.08 07:40
Оценка:
Выручили спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.