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

时间:2019-01-02 05:58:41

标签: javascript jquery html asp.net asp.net-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>
控制器中的

brandsOfACategory代码:

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

代码无法正常工作,因为id为null。

有人可以指导吗?

3 个答案:

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