此JavaScript代码用于将视图中的字符串传递给控制器中的操作:
<script type="text/javascript">
$(document).on('click', 'a', function () {
$.ajax({
type: 'POST',
url: '/brandsOfACategory',
contentType: 'application/json; charset:utf-8',
data: JSON.stringify(this.id)
})
});
</script>
控制器中的brandsOfACategory代码:
public ActionResult brandsOfACategory(string id)
{
return View();
}
代码无法正常工作,因为id为null。
有人可以指导吗?
答案 0 :(得分:0)
$.ajax({
type: 'POST',
url: '/brandsOfACategory',
contentType: 'application/json; charset:utf-8',
data: { 'id': id }
})
答案 1 :(得分:0)
Ajax代码
$.ajax({
url: "controllerurl",
type: "POST",
data: {
id: "123"
},
dataType: "json",
success: function(result) {
//Write your code here
}
});
有关ajax link
的更多信息ASP.Net中的参数绑定 link
答案 2 :(得分:-1)
使用您当前的代码,当进行ajax调用时,请求有效负载只有一个字符串值。例如,如果您单击的链接具有Id
属性值“ link1”,它将发送以下字符串作为ajax调用的请求有效负载。(如果打开dev tools-> network,可以看到此内容。标签)
"link1"
要使模型绑定起作用,有效负载应具有键值格式,以便将值映射到与键值相同的参数。
由于它是一个简单的值,因此您不必发送JSON字符串化版本和将contentType
作为application/json
发送。只需将JS对象作为data
发送。确保您发送的JavaScript对象的键/属性名称与操作方法参数名称(id
)相同,并且可以正常工作。
假定锚标记具有有效的Id
属性值,以便this.id
表达式返回有效的字符串值。
<a href="/SomeUrl" id="myId">MyLink</a>
在脚本中,您可能还希望停止正常的单击行为,以防止页面导航到href属性值。
$(document).on('click', 'a', function (e) {
e.preventDefault();
$.ajax({
type: 'POST',
url: '/brandsOfACategory',
data: { id :this.id }
}).done(function (res) {
console.log('result from ajax call',res);
})
});
这将发送类似id=myId
的值作为请求的表单数据。由于您未明确指定contentType,因此它将使用默认的application/x-www-form-urlencoded
如果单击的链接用户没有Id
属性,则代码将不会发送任何值,因为this.id
将返回一个空字符串,并且您在服务器端的参数值将为空。