将简单类型从HTML表单发送到ASP API



我遇到了从形式到asp api的简单双重数时遇到麻烦。

提交表格时,我首先需要删除提交按钮,以免向API控制器发送多余的"提交=提交"值。

正如我在本文中阅读的那样,我将输入字段的名称设置为空。因此,如果我在开发人员模式下检查HTTP请求,则发送的数据的正文看起来像是'= value'。我的方法参数装饰有[来自]的属性。

即使所有这些,控制器方法也无法获得值。它一直是零。

该怎么办?

我的表格看起来像:

 <form action="@Url.Action("Temperature","Api")" method="post" >
       <input type="number" name=" " step="0.25"/>
       <input type="submit" name="submit" />
   </form>
</div>
<script>
    $("form").submit(function () {
        $(this).children('[name="submit"]').remove();
    });
</script>

控制器:

    // POST: api/Temperature
    public void Post([FromBody]double value) //FormDataCollection data
    {            
        Temperature newEntry = new Temperature() { Timestamp = DateTime.Now, Value = value};
        try
        {
            db.Temperatures.Add(newEntry);
            db.SaveChanges();
        }
        catch(Exception e)
        {
            Debug.WriteLine(e.Message);
        }
    }

尝试ajax ...

更改您的html有点像这样:

 <div>
       <input type="number" id="number" name=" " step="0.25"/>
       <input type="button" id="submit" name="submit" />
</div>

然后:

$(document).on('click', '#submit', function () {
    $.ajax({
        type: 'POST',
        url: '/ControllerName/Post',
        data: {
            value: JSON.stringify($('#number').val())
        },
        success: function (data) {
            alert(data);
        },
        error: function (data) {
            alert("An Issue has occured");
        }
    });
})

您的控制器输入参数也将是:

public void Post([FromBody]string value) //convert string to double later within method 

最新更新