Подтвердить что ты не робот

Как работает @Html.BeginForm()? и результат поиска в учебнике Microsoft ASP.Net MVC 5?

Я работаю над MVC 5 Asp.Net и следую этому уроку. Мне интересно, как, черт возьми, это получить результат, когда я нажимаю кнопку фильтра?

Наступает момент, когда этот код добавляется в Movie/view/Index.cshtml.

@using (Html.BeginForm())
{    
     <p> Title: @Html.TextBox("SearchString") <br />   
     <input type="submit" value="Filter" /></p> 
} 

Теперь, насколько я знаю, он создает текстовое поле и кнопку на экране. Но как эта кнопка вызывает функцию поиска (индекса) и передает значение текстового поля в функцию, я не смог этого получить.

4b9b3361

Ответ 1

Это не тупой вопрос. @html.BeginForm() работает следующим образом. У него есть некоторые параметры, которые вы можете добавить к нему, например Action Controller FormType htmlAttributes. Это работает так, что если вы оставите его пустым, он будет искать действие публикации с тем же именем, что и на странице, на которой вы сейчас находитесь, например, если вы находитесь на странице входа в систему, он будет искать действие публикации сообщения. Я всегда пишу, к какому action и controller я хочу получить доступ.

@Html.BeginForm("AddUser", "Admin", FormMethod.Post, new { @class = "my_form"}) {

}

Таким образом, ваше post action должно принимать параметры, которые содержит ваша форма, и это может быть Model то есть параметры Product, ViewModel или однострочные. В вашем случае с поиском ваше действие должно выглядеть так

[HttpPost]
public ActionResult Search(string SearchString) 
{
   //do something here
}

Обратите внимание, здесь строка поиска будет передана в метод. Имя <input> должно совпадать с параметром, который принимает ваше действие. Таким образом, наша форма должна быть такой

@using (Html.BeginForm("Search", "YOUR CONTROLLER", FormMethod.Post)){    
     <p> Title: @Html.TextBox("SearchString") <br />   
     <input type="submit" value="Filter" /></p> 
} 

Надеюсь, что это приносит ясность.