Можно ли передать элемент / элемент формы в контроллер через ненавязчивый AJAX в ASP.Net Core?
У меня есть приложение ASP.Net Core MVC, и мне нужно обновить некоторые элементы одним щелчком мыши. Например, создать форму человека, которая ищет существующий адрес.
Я знаю, что не могу использовать вложенные формы. Однако, вернувшись к своим знаниям из MVC за 3 дня, я подумал о ненавязчивом Javascript, а затем запустил скрипт из результата для обновления основной формы.
Это прекрасно работает, когда я высмеиваю контроллер для получения заданного значения, но я просто не могу понять, как передать параметр.
Для базового примера, моя форма:
<form>
----
xxxx LOADS OF FORM ELEMENTS xxxx
----
Address:
<input type="text" name="address">
<a href="" data-ajax="true" data-ajax-url="LoadAddress" data-ajax-update="#test" data-ajax-mode="after" data-ajax-complete="changeid">LoadAddress</a>
</form>
Теперь об этом - просто вернув контроллер 1
, это работает хорошо... но я действительно хочу сначала передать вход в контроллер.
Есть ли способ перехватить запрос и передать данные поля адреса, или я должен отказаться от идеи использования ненавязчивого AJAX и сделать что-то более родное?
(и... я нахожу, что столько документации устарело... хотя я считаю, что она работает для других битов, все еще используется ненавязчивый AJAX?)
2 ответа
Вы можете оставить тег формы и связать свои AJAX-вызовы со слушателями событий. Затем вы можете отправлять и получать значения в любое время.
HTML
<input type="text" name="address" id="address">
<button id="submit">submit the form</button>
JS
let field = document.querySelector("#address")
let btn = document.querySelector("#button")
field.addEventListener("change", (e)=> {
fetch(`http://yourapi.com/search?address=${e.target.value}`)
.then(res => {
console.log("search result was returned")
})
})
btn.addEventListener("click", (e)=> {
console.log("use fetch to submit the form here")
})
Вы делаете это правильно, устанавливая
name
отнести к
<input>
Вы должны иметь доступ к значению в контроллере....
public IActionResult GetAddress(string address){
//do something with address
return View();
}
Вы также можете увидеть это в параметрах передачи через ядро unobtrusive-ajax form.net.