Javascript 如何通过ajax调用从一个控制器检索viewmodel数据
我有一个ajax调用,它调用控制器中的一个方法,在该方法中,我将数据分配给我希望能够在视图上读取的viewmodel。控制器方法完成后,我无法将更新的viewmodel传递到视图 JavascriptJavascript 如何通过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
$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
模型并填充它,但从不将其返回给客户端?