我遇到了从形式到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