【发布时间】:2021-04-13 13:26:45
【问题描述】:
我有一个场景,我想在 ASP NET Core MVC 3 中从视图到控制器进行 ajax 调用。然后控制器应该返回部分视图作为响应。主要问题是当数据通过 ajax post 请求传递给控制器时,控制器发现数据为空。我搜索了很多关于这个主题的在线内容,但没有适合我的解决方案。
这是我的控制器方法:
[HttpPost]
public PartialViewResult AddUserForm(string firstName, string lastName)
{
// some stuff happens then
return PartialView();
}
我的 Ajax post 方法在视图中:
<script>
function replaceContentsOfDiv() {
var f = $('#fName').val();
var l = $('#lName').val();
$.ajax({
url: '@Url.Action("AddUserForm", "Reservation")',
contentType: 'application/json',
data: JSON.stringify({ firstName: this.f, lastName: this.l }),
type: "POST",
success: function(data) {
$('#placeHolderDiv').html(data);
},
error: function() {
alert("something is wrong");
}
});
}
</script>
来自这个js脚本的数据(var f和var l具有有效值。但是,如果我想在控制器方法中注销string firstName和string lastName,它们都是空的。这可以用即logger.LogInformation((firstName == null).ToString())。
任何人都知道我做错了什么,因此传递到控制器的数据为空?我什至尝试将[FromBody] 注释添加到AddUserForm 参数,但也没有成功。
编辑:修正了我的 JS 脚本中的一些错字。
【问题讨论】:
-
尝试从您的 ajax 帖子中删除
JSON.stringify()调用。 -
看起来你的 js 姓氏变量中有一个额外的“L”(简单的错字)。把 this.f 和 this.l 改成 f 和 l 有影响吗?
-
嗨@friderik,关于这个案例的任何更新?
-
和代码
var l = $('#lName').vall();到var l = $('#lName').val(); -
大家好,很抱歉那个额外的 'l' 错字 - 这不是问题 :) 我尝试删除 JSON.stringify() 调用,但仍然没有成功......
标签: c# ajax asp.net-mvc asp.net-core