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

时间:2012-05-18 10:43:04

标签: c# asp.net-mvc asp.net-mvc-2 asp.net-ajax

我在一个简单的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”参数始终为null。

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

答案一如既往地非常感谢:)

2 个答案:

答案 0 :(得分:1)

事实证明你无法通过ActionLink传递对象...... 我想,当你真的想到它时,这是有道理的。

哼哼..猜我只需添加一个ID参数就可以通过Ajax引用它:/

答案 1 :(得分:1)

我同意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发送回服务器