Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Не получается прочитать Request.QueryString[] / 7 сообщений из 7, страница 1 из 1
09.01.2013, 16:43
    #38103738
Gena928
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается прочитать Request.QueryString[]
День добрый,
есть простая форма, которая вызывает метод Post:
Код: plaintext
1.
2.
3.
4.
5.
6.
<% Html.BeginForm("CreateNewExam", "Home", FormMethod.Post, new { name = "frm", id = "frm" }); %>

    <input type="text" id="input_CrExamID" name="input_CrExamName" value="Some value" />
    <input type="submit" name="createButton" value="Create Me!" />

<% Html.EndForm(); %>



ActionResult:
Код: c#
1.
2.
3.
4.
5.
[HttpPost]
public ActionResult CreateNewExam(FormCollection formCollection)
{
            string var = Request.QueryString["ExamID"].ToString();
}


Ошибка вылетает при попытке получить QueryString. Т.е. на первой строчке.
При этом я вижу что приложение уже перескочило на другую страничку, поэтому,ессесно, QueryString там нет.

Можно ли не "перескакивать" на другую страничку при обработке ActionResult? Т.е. чтобы QueryString осталась? Она мне оч. нужна.
...
Рейтинг: 0 / 0
09.01.2013, 16:56
    #38103762
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается прочитать Request.QueryString[]
С QueryString все в порядке, просто в ней нет параметра ExamID, поэтому ToString сваливается в ошибку.
...
Рейтинг: 0 / 0
09.01.2013, 17:28
    #38103835
Gena928
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается прочитать Request.QueryString[]
Antonariy,
А есть идеи почему его там нет?

Дело в том, что при загрузке формы все работает:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public ActionResult Menu()
{
// Номер экзамена
string _ExamID = "";

if (Request.QueryString["ExamID"] != null)
    _ExamID = Request.QueryString["ExamID"].ToString();

// Значение _ExamID успешно получено, залезли в базу, заполнили форму.....

}



На той же форме, но при нажатии кнопки и вызове метода Post:
Код: c#
1.
2.
3.
4.
5.
6.
7.
[HttpPost]
public ActionResult CreateNewExam(FormCollection formCollection)
{
// Номер экзамена
string _ExamID = Request.QueryString["ExamID"].ToString(); // ошибка!

}
...
Рейтинг: 0 / 0
09.01.2013, 17:34
    #38103850
Gena928
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается прочитать Request.QueryString[]
Сорри, туплю.

получается, когда я гружу страничку, там есть QueryString, а когда вызывается метод Post, то приложение тут-же перескакивает на другой адрес (в данном случае .../Home/CreateNewExam) и QueryString уже нет.


Пасиб.
...
Рейтинг: 0 / 0
09.01.2013, 18:08
    #38103912
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается прочитать Request.QueryString[]
Gena928, Вам не мешало бы разобраться в том, что такое GET и что такое POST.

P.S.: впервые вижу, что кто-то обращается к Request.QueryString внутри контроллера ASP.NET MVC.
Вроде как параметры GET запроса итак прекрасно отображаются на параметры определённого действия (action) контроллера.
...
Рейтинг: 0 / 0
09.01.2013, 20:05
    #38104046
Парамон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается прочитать Request.QueryString[]
Gena928,

Бесплатный букварь:

1. Переменную не называем var!
2. Зачем Query String делать ToString ? )
3. При методе пост используем - Reques.Form["ExamName"].
4. При использовании FormCollection - formCollection["ExamName"].
5. (2, 3, 4 в топку) MVC сам все делает.

Должно быть как то так:
Код: plaintext
1.
2.
3.
4.
<form method="post" action="<%=Url.Action("CreateNewExam", "Home")%>">
    <input type="text" name="ExamName" value="Some value" /> <!-- ExamName!! -->
    <input type="submit" name="CreateButton" value="Create Me!" />
</form>


Код: c#
1.
2.
3.
4.
5.
[HttpPost]
public ActionResult CreateNewExam(stirng ExamName)
{
    return Content("Hello world " + ExamName);
}
...
Рейтинг: 0 / 0
10.01.2013, 18:21
    #38105376
Gena928
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается прочитать Request.QueryString[]
Парамон,
Спасибо большое. Буду ковыряться.

Небольшой вопрос (подозреваю что дико ламерский):
- при попытке отправить запрос на сервер через форму (<form method="post"...) MVC хочет видеть только "беспараметрический конструктор" для класса.

Т.е. вот такая штука НЕ прокатывает:
Код: c#
1.
2.
3.
4.
5.
6.
[HttpPost]
public ActionResult Menu(string PaperCode, MyClass c)
{
    // some actions
    return View();
}


Ругается: Для данного объекта не определено беспараметрических конструкторов.
Хочет так:
Код: c#
1.
2.
3.
4.
5.
6.
[HttpPost]
public ActionResult Menu()
{
    // some actions
    return View();
}



Я специально сделал другой проект MVC, контроллер, вьюху с формой. Отрабатывает на ура:
Код: c#
1.
2.
3.
4.
5.
6.
[HttpPost]
public ActionResult Menu(string PaperCode, MyClass cl)
{
    // работаем...
    return View(cl);
}



Что это может быть?
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Не получается прочитать Request.QueryString[] / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]