繁体   English   中英

如何将字符串从视图传递到 mvc 中的控制器

[英]How to pass string from a View to a controller in mvc

此 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>

控制器中的brandOfACategory 代码:

public ActionResult brandsOfACategory(string id)
    {
        return View();
    }

代码未按预期工作,因为 id 为空。

有人可以指导吗?

$.ajax({
  type: 'POST',
  url: '/brandsOfACategory',
  contentType: 'application/json; charset:utf-8',
  data: { 'id': id }
})

阿贾克斯代码

$.ajax({
    url: "controllerurl",
    type: "POST",
    data: {
        id: "123"
    },
    dataType: "json",
    success: function(result) {
        //Write your code here
    }
});

有关 ajax链接的更多信息

ASP.Net 链接中的参数绑定

使用您当前的代码,在进行 ajax 调用时,请求负载只有一个字符串值。 例如,如果您单击的链接具有Id属性值“link1”,它将发送以下字符串作为您的 ajax 调用的请求负载。(如果您打开开发工具->网络选项卡,您可以看到这一点)

"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将返回一个空字符串并且您在服务器端的参数值为 null。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM