我在一个简单的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。
我现在已经阅读了很多页面和博客,但我没有看到我做错了什么......因此这个问题。
答案一如既往地非常感谢:)
答案 0 :(得分:1)
事实证明你无法通过ActionLink传递对象...... 我想,当你真的想到它时,这是有道理的。
哼哼..猜我只需添加一个ID参数就可以通过Ajax引用它:/
答案 1 :(得分:1)
我同意sk93
虽然我没有使用asjax.actionlink方法(一个jquery家伙)
我可以指出你的解决方案有一个问题
在您的操作链接方法中,您正在使用{carObj = SOME_CAR_OBJ}
这意味着您发送的是一个具有名为carObj
和some value
的属性的对象。
你应该拥有的是一个JSON对象
{
//all the car propertiese
name = cars[10].name,
id = cars[10].id
//etc etc
}
这样你可以将carObj发送回服务器