Почему Classic ASP публикует список множественного выбора с пробелом между значениями, а ASP.Net - нет? - PullRequest
1 голос
/ 09 октября 2009

У меня есть старый классический ASP-код, такой как:

<html>
<head></head>
<body>
<form action="test.asp" method="post" name="fname">
<select name="clients" size="3" multiple="multiple">
       <option value="5311" selected="selected">5311</option>
       <option value="9999" selected="selected">9999</option>
</select>
<input type="submit" value="test">
</form>
<%
dim clients
clients=Request.Form("clients")
Response.Write(clients)
%>
</body>
</html>

Это выводит 5311, 9999 из объекта Request.Form

Если я помещу тот же HTML-код в приложение ASP.Net и прочту объект Request.Form, он выдаст 5311,9999.

Найдите разницу, между ними есть пробел.

Почему это? Есть ли способ изменить его, чтобы он включал пробел?

Спасибо

Ответы [ 3 ]

2 голосов
/ 18 марта 2011

Классический ASP изменился. Примерно в Windows Server 2008, возможно позже, из-за исправления или пакета обновления, он начал помещать между элементами.

То же самое происходит с массивами полей. Если у вас есть 3 поля ввода с именем «AMOUNT», response.write (request.amount) будет отображать aaa, bbb, ccc

Я работаю с классическим ASP около 12 лет, и это начало происходить некоторое время назад и ломать вещи.

Хотя я никогда не видел, чтобы это было документировано.

Примечание: я могу найти старую документацию Microsoft, в которой конкретно указано "строка с разделителями-запятыми"

0 голосов
/ 09 октября 2009

Я никогда не замечал различий в том, как Classic ASP и ASP.NET работают в этом отношении, но наличие или отсутствие пробела не должно влиять на предложение IN. Если вы в настоящее время просто добавляете значение Request.Form в динамически созданный оператор SQL, вы, как уже указывалось, потенциально можете столкнуться с проблемой. Вы должны параметризовать его:

http://www.mikesdotnetting.com/Article/116/Parameterized-IN-clauses-with-ADO.NET-and-LINQ

0 голосов
/ 09 октября 2009

Похоже, вы могли бы сделать замену, чтобы создать часть действительного оператора SQL. Если это то, что вы делаете, это действительно очень плохая идея, поскольку злой посетитель может использовать это для запуска любых SQL-операторов, которые им нравятся. Лучшая идея для классического ASP и ASP.net - разделить запятую и использовать CLng или Convert.ParseInt32 для преобразования в число и построения оператора SQL, используя это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...