Html.ActionLink()无法将C#对象传递给工作。

17 浏览
0 Comments

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)。

0
0 Comments

在这个问题中,使用ActionLink传递C#对象不起作用的原因是传递的对象只有一个“first level”属性:SearchObject。这是因为ActionLink方法会将传递的对象的属性通过反射转换成查询参数。

要解决这个问题,可以使用匿名对象来传递参数,而不是直接传递C#对象。这样可以确保所有属性都被正确地传递为查询参数。

以下是解决方法的示例代码:

.ActionLink("Export to Excel", "ReturnExcelOfViewableResponses", new { SearchObject = Model.SearchObject })

通过使用匿名对象,将C#对象的属性作为查询参数传递给ActionLink方法,就可以解决传递C#对象不起作用的问题。

0