使用ajax将值传递给控制器

时间:2016-06-03 17:02:14

标签: c# jquery ajax

我想通过使用ajax将值从视图传递给控制器​​。

 <button onclick="addCommentByAjax()" >Save</button>
  

我的剧本:

function addCommentByAjax() {
    $.ajax({
        type: "POST",
        url: '/Survey/DoDetailSurvey',

        data: {
            choiceId: "1"
        }


});
}
  

控制器:

 [HttpPost]
    public ActionResult DoDetailSurvey(SurveyViewModel model, string choiceId)
    {
     //
    }
  

但是choiceId始终为null

3 个答案:

答案 0 :(得分:2)

改变一些事情。

首先为您的按钮分配一个id或类。第二个删除内联onclick函数并使用ajax click函数。然后将请求类型指定为Post。

$('#btnComment').click(function () {       
    var choiceId = $('#YourChoiceId').val();

    $.ajax({
        url: '/Survey/DoDetailSurvey',
        data: { 'choiceId' : choiceId},
        type: "post",
        cache: false,
        success: function (response) {
           //do something with response
        },
        error: function (xhr, ajaxOptions, thrownError) {
             alert('error occured');
        }
    });
});

然后你的控制器应该是这样的

[HttpPost]
public ActionResult DoDetailSurvey(string choiceId)
{
     //
}

我不知道你是如何填充你的视图模型的,所以我故意删除它们并展示了一个有效的例子。

如果你想传递viewmodel,你应该像这样构建你的数据对象:

var data = {};
data.Property1 = some val;
data.Property2 = "some val";   

$.post('/Survey/DoDetailSurvey', data);

SurveyViewModel的示例结构我假设:

public class SurveyViewModel 
{
    public int Property1 { get; set; }
    public string Property2 { get; set; }
}

答案 1 :(得分:1)

由于控制器中有两个参数,您需要从客户端识别它们。此外,您应指定contentType

你像这样传播有效载荷:

function addCommentByAjax() {
    var payload =  {
        model: {
        // whatever properties you might have
        },
        choiceId: 1
    };

    $.ajax({
        type: "POST",
        url: '/Survey/DoDetailSurvey',
        contentType: 'application/json',
        data: JSON.stringify(payLoad)
    });
}

答案 2 :(得分:0)

function addCommentByAjax() {
$.ajax({
    type: "POST",
    url: '/Survey/DoDetailSurvey?choiceId=1'
    }
});
}

您也可以像这样传递

或更多参数

function addCommentByAjax() {
$.ajax({
    type: "POST",
    url: '/Survey/DoDetailSurvey?choiceId=1&Name=Arun'
    }
});
}