#c# #asp.net-mvc
#c# #asp.net-mvc
Вопрос:
Я начинаю с ASP.net MVC, и у меня есть два представления. Первый — ViewPost с формой, которую я хочу, чтобы при нажатии кнопки ввода информация из формы отправлялась в другое представление. Мой код выглядит так:
<h2>ViewPost</h2>
<form method="POST" action="~/Home/NewView">
Number<input id="id_number"type="text" name="name_number" />
Text<input id="id_text" type="text" name="name_text" />
<input type="submit"/>
</form>
В контроллере у меня есть этот код:
[HttpPost]
public ActionResult ViewPost(int? name_number, string name_text)
{
return View();
}
Также в контроллере у меня есть метод GET для NewView, который проверяет значения и объединяет их, и отображает результирующую строку в ViewBag.Сообщение:
public ActionResult NewView(int? number, String name)
{
String urlParam = "";
if (number.HasValue)
{
urlParam = " Value number=" number;
}
if (name != null)
{
urlParam = " Value name=" name;
}
if (urlParam == "")
{
urlParam = "No values";
}
ViewBag.Message = urlParam;
return View();
}
когда я нажимаю кнопку отправки, я получаю
Resource not found. Requested URL: /Home/NewView
но при переходе по написанию URL-адреса я могу перейти без проблем
Ответ №1:
Ваша форма отправляет POST
запрос:
method="POST"
Но вы утверждаете, что ожидаете GET
запроса:
в контроллере у меня есть метод GET для NewView
Либо измените форму на GET
запрос:
method="GET"
или измените действие контроллера, чтобы принять POST
:
[HttpPost]
public ActionResult NewView(int? number, String name)
{
//...
}
Кроме того, имена элементов формы должны совпадать с именами переменных, которые вы хотите, чтобы они заполняли. Так что либо измените их в форме:
name="number"
...
name="name"
или измените их в методе действия:
public ActionResult NewView(int? name_number, String name_text)
Примечание по терминологии, которое может прояснить некоторые из них для вас…
я хочу, чтобы при нажатии кнопки ввода информация из формы отправлялась в другое представление
Это неверно. Вы не отправляете значения в представление, вы отправляете их в действие контроллера. Все, что поступает на сервер, обычно передается в действие контроллера. Этот метод действия может делать с этими значениями все, что ему нужно, включая возврат представления.
Но общее взаимодействие заключается в том, что код в браузере (ссылка, форма, JavaScript и AJAX и т. Д.) Отправляет запросы к действиям на стороне сервера, И эти действия возвращают множество ответов.
Комментарии:
1. Спасибо! Я вообще не понимал, как это работает, и я думал, что контроллер управляет отправкой и извлечением. Вы мне очень помогли