ASP.NET Web API 中的表单
Posted
技术标签:
【中文标题】ASP.NET Web API 中的表单【英文标题】:Form in ASP.NET Web API 【发布时间】:2020-06-04 17:17:38 【问题描述】:我的 Web API 中的表单有问题。表格非常简单。用户输入一个字符串,控制器接收该字符串并将其插入到带有 id 的数据库中。与数据库的连接有效,我可以安全地读取它。
EDIT 这是控制器中的代码。 EDIT 2 这是正确且有效的控制器
public ActionResult PostMyData(string json)
try
var newEntry = new Questions() Id = json.Id, Question= json.Question;
context.Questions.Add(newEntry);
context.SaveChanges();
return Ok();
catch (Exception e)
return BadRequest();
这是 html 页面的一部分。 编辑 这是不返回错误的更新脚本。 EDIT 2 这是正确且有效的脚本
<script language="javascript">
$(document).on('click', '#submitButt', function ()
var myquestion = $('#question').val();
var json =
Id : 1,
Question: myquestion
$.ajax(
type: "POST",
url: "api/Simple",
data: JSON.stringify(json),
dataType: "json",
contentType:"application/json",
success: function (data)
alert(data);
,
error: function (data)
alert("An Issue has occured");
);
)
</script>
【问题讨论】:
这里有问题吗? 这不是问题或对问题的有用描述。请阅读What do you mean "it doesn't work"? 你能告诉我们错误吗?并将您的问题放在帖子中而不是在评论中,以提供更多帮助 【参考方案1】:关于你的场景,你可以这样做:
<input type="text" id="question" name="question" />
<input type="button" id="submitBtn" name="submitBtn" value="Send"/>
<script>
$(document).on('click', '#submitBtn', function ()
var myquestion=$('#question').val();
var json =
myquestion: myquestion
;
$.ajax(
type: 'POST',
url: "api/Simple/PostMyData",
dataType: "json",
data: JSON.stringify(json),
contentType: "application/json",
success: function (data)
alert(data);
,
error: function (data)
alert("An Issue has occured");
);
)
</script>
你的Controller
看起来像:
using System.Web.Script.Serialization;
[HttpPost]
public ActionResult Post([FromBody] string json)
var serializer = new JavaScriptSerializer();
dynamic jsondata = serializer.Deserialize(json, typeof(object));
//Get your variables here from AJAX call
var myquestion= jsondata["myquestion"];
try
var newEntry = new Question() Id = 1, Question= myquestion;
context.Question.Add(newEntry);
context.SaveChanges();
return Ok();
catch (Exception e)
return BadRequest();
【讨论】:
感谢您的回复。但是,控制器似乎没有收到请求。我相信问题出在 URL 上。 @Luiss.PEP 也许 JS 端可能有一些错误。您也可以在这里将操作方法名称更改为更有意义的名称,例如public ActionResult PostMyData(string json)
。另请参阅我对您定义的按钮的编辑。我添加了一个id
字段
你能在调试时点击控制器方法吗?这可能与您的数据库上下文有关。
检查您浏览器上的控制台。它将显示您的脚本中是否有任何错误。此外,您还没有为您的姓名输入设置 id。检查更新的答案。
最后,多亏了你,我解决了这个问题。您可以在我的问题中看到最终解决方案。以上是关于ASP.NET Web API 中的表单的主要内容,如果未能解决你的问题,请参考以下文章
从 ASP.NET MVC Web API 中的多个表单数据键接收文件
来自 web api 的 asp.net web 表单下拉列表
使用 jquery ajax 从 asp.net 网页表单页面调用 web api url