带有 Ajax 调用的 MVC - 不将对象传递给控制器方法

本文关键字:对象 方法 控制器 调用 Ajax MVC 带有 | 更新日期: 2023-09-27 18:34:39

我在一个简单的MVC视图中有以下代码:

<div id="CarText"><%=Model.Cars[10].Name %></div>
<div id="SelectedCar">no car selected</div>
<%=Ajax.ActionLink("ajax test","TestMethod",new {carObj = Model.Cars[10]},new AjaxOptions {UpdateTargetId = "SelectedCar"})%>

然后在我的控制器中,我有以下内容:

public ActionResult TestMethod(Car carObj)
{
   return PartialView("SelectedCar", carObj);
}

当我运行页面时,它都按我的预期呈现(例如,第 11 辆车的名称显示在第一个div 中。然后,当我单击链接时,调用控制器中的代码,但"carObj"参数始终为空。

我现在读了相当多的页面和博客,但我没有看到我做错了什么......因此这个问题。

一如既往,非常感谢:)

带有 Ajax 调用的 MVC - 不将对象传递给控制器方法

所以事实证明你不能通过 ActionLink 传递对象......我想当你真正考虑它时,这是有道理的。

哼......猜我将不得不添加一个 ID 参数,以便我可以通过 Ajax 引用它:/

我同意 sk93
虽然我没有经常使用asjax.actionlink方法(一个jquery家伙(。
我可以指出您的解决方案的一个问题在你正在使用的操作链接方法中{carObj = SOME_CAR_OBJ}这意味着你发送的是一个具有名为 carObjsome value 的属性的对象。
相反,您应该拥有一个 JSON 对象

{
//all the car propertiese
name = cars[10].name,
id = cars[10].id
//etc etc
}

这样,您可能能够将carObj发送回服务器