Html.ActionLink()无法将C#对象传递给工作。
Html.ActionLink()无法将C#对象传递给工作。
我试图通过ActionLink将一个对象传递给MVC控制器中的一个方法。\nRazor语法:\n
@Html.ActionLink("导出到Excel", "ReturnExcelOfViewableResponses", new { SearchObject = Model.SearchObject })
\n实际在标记中显示的内容:\n
导出到Excel
\n控制器方法被正常调用,所以没有必要在这里发布。需要做的是如何将实际的值传递给actionLink,而不是DTO.SearchObject
。根据HTML.ActionLink方法,看起来我使用了正确的语法(使用MVC 4)。
在这个问题中,使用ActionLink
传递C#对象不起作用的原因是传递的对象只有一个“first level”属性:SearchObject。这是因为ActionLink
方法会将传递的对象的属性通过反射转换成查询参数。
要解决这个问题,可以使用匿名对象来传递参数,而不是直接传递C#对象。这样可以确保所有属性都被正确地传递为查询参数。
以下是解决方法的示例代码:
.ActionLink("Export to Excel", "ReturnExcelOfViewableResponses", new { SearchObject = Model.SearchObject })
通过使用匿名对象,将C#对象的属性作为查询参数传递给ActionLink
方法,就可以解决传递C#对象不起作用的问题。