提问人:gene 提问时间:8/2/2018 最后编辑:Anastasios Selmanigene 更新时间:8/3/2018 访问量:325
MVC:在 Ajax 调用时从控制器返回时,结果是未定义的
MVC: When returning from the controller on Ajax call, the result is undefined
问:
当单击 Kendo 按钮并返回模型时,我正在对控制器进行 Ajax 调用:
@(Html.Kendo().Button()
.Name("btnSubmit")
.HtmlAttributes(new { type = "button" })
.Icon("rotate")
.Content("View Details"))
<script>
$("#btnSubmit").click(function () {
$.ajax({
url: "/MyController/MyMethod/",
type: 'post',
dataType: "json",
contentType: 'application/json; charset=utf-8',
success: function (result) {
window.location.href = "@Url.Action("RedirectToView", "MyController", new { myModel = "data" })".replace("data", result);
}
})
});
</script>
控制器的方法返回模型:
[AcceptVerbs(HttpVerbs.Post)]
public JsonResult MyMethod()
{
var reportDate = Session["FileDate"] == null ? DateTime.Now : Convert.ToDateTime(Session["FileDate"].ToString());
var myModel = new MyModel();
myModel.ColOfData = myModel.GetColOfData(reportDate);
return Json(myModel, JsonRequestBehavior.AllowGet);
}
当我调试我的函数时,结果是未定义的。结果应该分配给 MyModel,因为我要将模型返回给函数。我需要将该结果传递给控制器中的另一个方法,该方法将返回包含我的 Grid:Ajax
Ajax
Partial View
public ActionResult RedirectToView(MyModel myModel)
{
return PartialView("_MyPartialView", myModel);
}
我做错了什么?
答:
0赞
Anastasios Selmani
8/3/2018
#1
你的问题与剑道无关。
从你的控制器中,你必须返回一个像这样的json对象
return Json(new {result=myModel});
在你的ajax结果中,你将拥有你的整个模型。
之后,从您提供的代码中,恐怕您无法在 GET 的 url 中传递整个模型。
你可以像这样传递模型 ID
window.location.href = "@Url.Action("RedirectToView", "MyController", new { id= "modelId" })".replace("modelId", result.Id);
让你的行动像那样
public ActionResult RedirectToView(string id){
// Get the model data you want .....
return PartialView("_MyPartialView", myModel);
}
评论
location.href