【问题标题】:Is it possible to pass a parameter/single form element to a controller via unobtrusive AJAX in ASP.Net Core?是否可以通过 ASP.Net Core 中不显眼的 AJAX 将参数/单个表单元素传递给控制器​​?
【发布时间】:2019-02-17 11:22:16
【问题描述】:

我有一个 ASP.Net Core MVC 应用程序,我需要在单击时更新某些元素。例如,创建一个搜索现有地址的人员表单。

我知道我不能使用嵌套表单,但是,通过 3 天的 MVC 知识回顾,我想到了不显眼的 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 吗?)

【问题讨论】:

    标签: javascript ajax asp.net-core-mvc unobtrusive-ajax


    【解决方案1】:

    您可以省略表单标签并将您的 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")
    })
    

    【讨论】:

    • 这太好了,谢谢...以前从未使用过 fetch,但看起来很有趣...我将保持开放一段时间,因为我仍然很好奇是否可以通过不引人注目(由于模型绑定/基础知识要简单得多),但是,如果我没有得到任何回报,我会很乐意将其标记为答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多