Моя проблема заключалась в том, что вам нужно иметь строку строки подключения как на вашем уровне репозитория, так и на веб-уровне. Когда я добавил его в свой web.config, а также в свой app.config, Entity Framework смог создать миграцию.
Мой вопрос в том, зачем ему нужен web.config, когда есть абсолютно там нет доступа к базе данных.
Разве это не то, что скрытые параметры для начала ...?
<form action="http://www.example.com" method="GET">
<input type="hidden" name="a" value="1" />
<input type="hidden" name="b" value="2" />
<input type="hidden" name="c" value="3" />
<input type="submit" />
</form>
Я не буду рассчитывать на то, что любой браузер сохранит любую существующую строку запроса в URL-адресе действия.
В качестве спецификаций ( RFC1866 , стр. 46; HTML 4.x раздел 17.13.3) Состояние:
Если метод «get», а действие - это URI HTTP, агент пользователя принимает значение действия, добавляет `? ' к нему, затем добавляет набор данных формы, закодированный с использованием типа контента «application / x-www-form-urlencoded».
blockquote>Возможно, можно было бы процитировать URL-адрес действия для вставки знак вопроса и параметры, а затем перекрестите пальцы, чтобы надеяться, что все браузеры оставят этот URL как он (и подтвердите, что сервер тоже это понимает). Но я никогда не полагался на это.
Кстати: для не скрытых полей формы это не так. Для POST URL-адрес действия может содержать строку запроса.
В HTML5 это поведение зависит от конкретной функции.
Посмотрите на «4.10.22.3 Алгоритм представления формы», шаг 17. В случае формы GET для URI http / s с строка запроса:
Позволяет назначить новый URL-адрес, равный действию, за исключением того, что его компонент
blockquote><query>
заменяется запросом (добавление символа A + 003F QUESTION MARK (?), если Соответственно).Итак, ваш браузер уничтожит существующую «? ...» часть вашего URI и заменит ее новой на основе вашей формы.
В HTML 4.01 спецификация создает недопустимые URI - большинство браузеров на самом деле этого не делали.
См. http://www.w3.org/TR/html401/interact/forms .html # h-17.13.3 , шаг 4 - URI будет иметь? добавляется, даже если он уже содержит один.
?
в URL-адресе действия удалено? Итак, что же, если параметр GET в URL-адресе действия содержит цель, где форма должна обрабатываться? например: action="index.php?site=search"
. Я не уверен, что если поставить параметр GET в скрытые поля ввода, это идея бога.
– The Bndr
24 August 2017 в 13:09
Вы должны включить два элемента (a и b) в качестве скрытых входных элементов, а также C.
Location:
, если вы не хотите никакого взаимодействия с конечный пользователь.
– Jason
28 February 2018 в 17:27
Что вы можете сделать, это использовать простой файл foreach в таблице, содержащей информацию GET. Например, в php:
foreach ($_GET as $key => $value) {
echo("<input type='hidden' name='$key' value='$value'/>");
}
Ваше строительство незаконно. Вы не можете включать параметры в значение действия формы. Что произойдет, если вы попробуете это, это будет зависеть от особенностей браузера. Я бы не удивился, если бы он работал с одним браузером, а не с другим. Даже если бы он работал, я бы не стал полагаться на него, потому что следующая версия браузера могла бы изменить поведение.
«Но, допустим, у меня есть параметры в строке запроса и в скрытых вводах, что может Я делаю?" Что вы можете сделать, это исправить ошибку. Не быть укушенным, но это немного похоже на вопрос: «Но скажем, мой URL использует процентные знаки вместо косых черт, что я могу сделать?» Единственный возможный ответ: вы можете исправить URL.
У меня была очень схожая проблема, где для действия формы у меня было что-то вроде:
<form action="http://www.example.com/?q=content/something" method="GET">
<input type="submit" value="Go away..." />
</form>
Кнопка выведет пользователя на сайт, но информация о запросе исчезла, поэтому пользователь приземлился домашняя страница, а не желаемая страница содержимого. Решение в моем случае состояло в том, чтобы выяснить, как закодировать URL-адрес без запроса, который приведет пользователя к желаемой странице. В этом случае моя цель была сайтом Drupal, так как оказалось, что /content/something
также работал. Я также мог бы использовать номер узла (т. Е. /node/123
).
Я обычно пишу что-то вроде этого:
foreach($_GET as $key=>$content){
echo "<input type='hidden' name='$key' value='$content'/>";
}
Это работает, но не забывайте санировать ваши входы против атак XSS!
<form ... action="http:/www.blabla.com?a=1&b=2" method ="POST">
<input type="hidden" name="c" value="3" />
</form>
измените метод запроса на «POST» вместо «GET».
Это ответ на вышеприведенный пост Efx:
Если URL уже содержит var, который вы хотите изменить, он снова добавляется как скрытое поле.
Вот модификация этого кода, чтобы предотвратить дублирование vars в URL:
foreach ($_GET as $key => $value) {
if ($key != "my_key") {
echo("<input type='hidden' name='$key' value='$value'/>");
}
}
Если вам нужно обходное решение, так как эту форму можно разместить в сторонних системах, вы можете использовать Apache mod_rewrite следующим образом:
RewriteRule ^dummy.link$ index.php?a=1&b=2 [QSA,L]
, тогда ваша новая форма будет выглядеть так:
<form ... action="http:/www.blabla.com/dummy.link" method="GET">
<input type="hidden" name="c" value="3" />
</form>
, и Apache добавит третий параметр к запросу