MVC 5 Html.BeginForm без модели
У меня есть простая форма поиска на моей странице _Layout.
Как я могу легко передать значение из search-fld в контроллер? Без создания модели или ViewModel.
@using (Html.BeginForm("Search", "Home", new { id = "search-fld" }, FormMethod.Post, new { @class = "header-search pull-right" }))
{
@Html.AntiForgeryToken()
<input type="text" placeholder="Search" id="search-fld">
<button type="submit">
<i class="fa fa-search"></i>
</button>
}
Если я запустил это, тогда "search-fld" отправляется на контроллер (offcourse)
Вместо этого используйте форму Ajax и получите значение с помощью JQuery?
Ответы
Ответ 1
Просто добавив атрибут input
a name
:
<input type="text" placeholder="Search" id="search-fld" name="searchValue">
Затем сопоставление этого имени с параметром в вашем контроллере HttpPost
:
[HttpPost]
public ActionResult Search(string searchValue)
Ответ 2
Вы можете использовать такой вызов Ajax:
$(document).ready(function() {
$("#yourButton").click(function () {
var yourValue = $("#search-fld").val() ;
var url = "Search/asd/";
$.ajax({
url: url,
cache: false,
type: 'POST',
data: {
searchValue = yourValue
}
success: function (data) {
if (data === true) {
alert('Success');
} else {
alert('Failed');
}
}
})
})
})
И ваш метод в контроллере:
[HttpPost]
public ActionResult asd(string searchValue)
{
}