Javascript 如何通过ajax调用从一个控制器检索viewmodel数据

Javascript 如何通过ajax调用从一个控制器检索viewmodel数据,javascript,c#,ajax,asp.net-mvc,Javascript,C#,Ajax,Asp.net Mvc,我有一个ajax调用,它调用控制器中的一个方法,在该方法中,我将数据分配给我希望能够在视图上读取的viewmodel。控制器方法完成后,我无法将更新的viewmodel传递到视图 Javascript $ANALYZE = $('#submitID'); $ANALYZE.click(function () { var objectID = document.getElementById('objectIDInput').value; $.ajax({ url

我有一个ajax调用,它调用控制器中的一个方法,在该方法中,我将数据分配给我希望能够在视图上读取的viewmodel。控制器方法完成后,我无法将更新的viewmodel传递到视图

Javascript

$ANALYZE = $('#submitID');

$ANALYZE.click(function () {
    var objectID = document.getElementById('objectIDInput').value;

    $.ajax({
        url: '@Url.Action("AnalyzeData")',
        type: "POST",
        dataType: "json",
        data: { 'objectID': objectID },
        success: function (response) {
            alert(response.responseText);
        },
        error: function (response) {
            alert(response.responseText);
        }
    });
});
控制器

public ActionResult Index(AnalyzeViewModel data)
{
    //Display table to view
    AnalyzeViewModel avm = new AnalyzeViewModel();
    if (data != null)
        avm.fileData = data.fileData;
    else
        avm.fileData = null;

    return View(avm);
}

[HttpPost]
public ActionResult AnalyzeData (int objectID)
{
    List<string> retList = new List<string>();
    AnalyzeViewModel avm = new AnalyzeViewModel();

    try {
        retList = SOME LIST

        avm.fileData = retList.ToArray();

        Response.StatusCode = (int)HttpStatusCode.OK;
        var obj = new
        {
            success = true,
            responseText = "Zones data has been calculated."
        };
        return Json(obj, JsonRequestBehavior.AllowGet);
    }
公共行动结果索引(AnalyzeViewModel数据)
{
//显示要查看的表
AnalyzeViewModel avm=新AnalyzeViewModel();
如果(数据!=null)
avm.fileData=data.fileData;
其他的
avm.fileData=null;
返回视图(avm);
}
[HttpPost]
公共行动结果分析数据(int objectID)
{
List retList=新列表();
AnalyzeViewModel avm=新AnalyzeViewModel();
试一试{
retList=一些列表
avm.fileData=retList.ToArray();
Response.StatusCode=(int)HttpStatusCode.OK;
var obj=新
{
成功=正确,
responseText=“已计算区域数据。”
};
返回Json(obj,JsonRequestBehavior.AllowGet);
}
查看

<tbody class="scrollContent">
    @if (Model.fileData != null)
    {
        foreach (string line in Model.fileData)
        {
            @Html.Raw(line);
        }
    }
</tbody>

@if(Model.fileData!=null)
{
foreach(Model.fileData中的字符串行)
{
@Html.Raw(行);
}
}

您好,您可以编写如下代码,以在jquery的成功功能中获取数据

Jquery

$ANALYZE = $('#submitID');

    $ANALYZE.click(function () {
        var objectID = document.getElementById('objectIDInput').value;

        $.ajax({
            url: '@Url.Action("AnalyzeData")',
            type: "POST",
            dataType: "json",
            data: { 'objectID': objectID },
            success: function (data) {
               //data here refers the viewmodel
              // some logic
            },
            error: function (response) {
                alert(response.responseText);
            }
        });
    });
控制器方法代码:

[HttpPost]
public ActionResult AnalyzeData (int objectID)
{
    List<string> retList = new List<string>();
    AnalyzeViewModel avm = new AnalyzeViewModel();

    try {
        retList = SOME LIST

        avm.fileData = retList.ToArray();

        Response.StatusCode = (int)HttpStatusCode.OK;
        var obj = new
        {
            success = true,
            responseText = "Zones data has been calculated."
        };


        return Json(avm, JsonRequestBehavior.AllowGet);
    }
[HttpPost]
公共行动结果分析数据(int objectID)
{
List retList=新列表();
AnalyzeViewModel avm=新AnalyzeViewModel();
试一试{
retList=一些列表
avm.fileData=retList.ToArray();
Response.StatusCode=(int)HttpStatusCode.OK;
var obj=新
{
成功=正确,
responseText=“已计算区域数据。”
};
返回Json(avm,JsonRequestBehavior.AllowGet);
}
希望能有所帮助

谢谢


Karthik

您正在进行ajax调用。ajax调用不会重定向,因此您的
return RedirectToAction()
没有任何意义。您已经指定了
数据类型:“json”,
但是您返回html,这样会引发错误。您返回的内容不包含名为
responseText
的属性,请重新查看代码,我输入了错误的代码。这应该更有意义,而且更新视图模型仍然不起作用。您还希望得到更多的答案,而不是批评。是吗收到错误?问题是什么?那么问题是什么?(作为旁注,您不需要
JsonRequestBehavior.AllowGet
-这是一篇文章)为什么您要初始化
AnalyzeViewModel
模型并填充它,但从不将其返回给客户端?