控制器 ActionResult 方法参数未从 ajax 调用接收表单数据

Posted

技术标签:

【中文标题】控制器 ActionResult 方法参数未从 ajax 调用接收表单数据【英文标题】:Controller ActionResult methods parameter is not receiving form data from an ajax call 【发布时间】:2018-12-16 05:07:37 【问题描述】:

我有一个购买表格来根据模型接收一些数据,但这里我在控制器中的 purchase_return 对象没有接收任何数据。它正在接收 productId 0 和 productNm null。谁能指出这里发生了什么? html

<form id="Purchase_ReturnForm">
    <div>
        <table>
            <tr>
                <td>
                    @Html.LabelFor(model => model.ProductId)
                </td>
                <td>
                    @Html.TextBoxFor(model => model.ProductId)
                </td>
                <td>
                    <input type="button" id="btnFind" value="Find" />
                </td>
            </tr>
            <tr>
                <td>
                    @Html.LabelFor(model => model.ProductNm)
                </td>
                <td>
                    <span id="edit">
                        @Html.TextBoxFor(model => model.ProductNm)
                    </span>
                </td>
            </tr>
        </table>
    </div>
</form>  

脚本:

 <script>
    $(document).ready(function () 
        $('#btnFind').click(function () 
            var data = $('Purchase_ReturnForm').serialize();
            $.ajax(
                type: 'Post',
                url: '/Purchase_Return/FindProductInvoice',
                data: data,
                success: function () 

                
            )
        );
    );
</script> 

在控制器中:

public ActionResult FindProductInvoice(Purchase_Return purchase_Return)
    
        return View();
    

还有模特

 public class Purchase_Return

    //public DateTime ReturnDt  get; set; 
    //public int ReturnSl  get; set; 
    //public DateTime PurchaseDt  get; set; 
    //public int PurchaseSl  get; set; 
    //public double TotReturnAmt  get; set; 
    //public double TotVat  get; set; 
    //public double TotDiscount  get; set; 
    //public int CustomerSupplyId  get; set; 
    [Display(Name="Product")]
    public int ProductId  get; set; 
    public string ProductNm  get; set; 
    //public double PurchaseRt  get; set; 
    //public double PurchaseQty  get; set; 
    //public double ProductDisAmt  get; set; 
    //public double ProductVat  get; set; 
    //public string ReturnNote  get; set; 
    //public int InsertUserId  get; set; 

【问题讨论】:

你需要展示你的模型 已更新模型数据@StephenMuecke 我觉得这个Link可以回答你的问题。 @AminKamalinia,这与 OP 的问题无关 你在 $('Purchase_ReturnForm').serialize() 中缺少#,因为你正在使用 id 【参考方案1】:

添加 # 登录您的数据,因为您使用 id 选择器来捕获表单数据。

$('#Purchase_ReturnForm').serialize()

它应该可以按您的预期工作。

【讨论】:

以上是关于控制器 ActionResult 方法参数未从 ajax 调用接收表单数据的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.NET MVC5 中,表 ID 未从视图传递到控制器

将带有 window.location.href 的参数传递给 MVC ActionResult

ActionResult的返回类型

ASP.NET MVC 控制器方法必须返回 ActionResult 吗?

.net MVC中ActionResult可以返回的视图

参数未从 Ajax 调用填充(尝试了一切)