Я могу изменить Запрос. Переменные формы?

Используйте ключевое слово limit. «выбрать * из таблицы LIMIT 1» Это будет делать, как говорится, и ограничит результат только одним.

12
задан T.S. 20 January 2019 в 22:11
поделиться

2 ответа

Это - точно то же как изменение Request.Querystring. Оба внутренне осложнены частными собственностями и что можно было считать ошибкой, однако существует два возможных решения, о которых я знаю (я отклоню план response.redirect без обсуждения - это ужасно).

Метод нужно использовать отражение для изменения набора непосредственно:

NameValueCollection oQuery = Request.QueryString;
oQuery = (NameValueCollection)Request.GetType().GetField("_queryString",BindingFlags.NonPublic | BindingFlags.Instance).GetValue(Request);
PropertyInfo oReadable = oQuery .GetType().GetProperty("IsReadOnly", BindingFlags.NonPublic | BindingFlags.Instance);
oReadable.SetValue(oQuery, false, null);
oQuery["foo"] = "bar";
oReadable.SetValue(oQuery, true, null); 

План B, который я думаю, предоставляет себя лучше поблочному тестированию, должен постараться не иметь дело с набором непосредственно и вместо этого передать его как a NameValueCollection к любому методу Вы хотите обработать его, мелкое копирование вообще, Вам нужно из него. Я использовал это сам для насмешки веб-запросов.

Править: Marc Gravell привел более красноречивые причины для плана B

13
ответ дан 2 December 2019 в 20:43
поделиться

Форма является представлением какой клиент, отправленный в запросе. Что это, Вы хотите сделать? Лично, я попытался бы отделиться "прочитанный форма" код от, "делают что-то со значениями" код - тот путь, можно сделать любую предварительную обработку вначале (при чтении из формы), и ни один из более позднего кода не должен знать о том, что было на самом деле отправлено - это просто принимает значения, данные ему (т.е. это никогда не говорит с запросом непосредственно).

Если также означает, что можно протестировать логику без потребности в форме или даже запрос HTTP вообще.

На самом деле ASP.NET MVC сделает многое из этого (вышеупомянутый абзац) для Вас...

Обратите внимание, что можно обновить.Items набор - но это немного более неопределенно (т.е. он не имеет отношение конкретно к форме).

(аплодисменты для фиксации опечатки btw)

2
ответ дан 2 December 2019 в 20:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: