HTML。 ActionLink:同时传递CSS类和Id

时间:2017-07-12 22:41:42

标签: c# asp.net-mvc routing

所以,这就是我尝试这样做的方式。

#!/usr/bin/python
# EASY-INSTALL-ENTRY-SCRIPT: 'mail-parser==1.2.0','console_scripts','mailparser'
__requires__ = 'mail-parser==1.2.0'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('mail-parser==1.2.0', 'console_scripts', 'mailparser')()
    )

但是当我这样做时,我会得到Argument异常,因为 ActionLink 没有传递Id。当我切换 null 值和匿名类的位置时,代码可以工作,但是不应用类。将不胜感激。

2 个答案:

答案 0 :(得分:0)

所以,我试过这个让它发挥作用

 <td>@Html.ActionLink("Sprawdź","Details","Home", new { @item.Id }, new {@class = "btn btn-info" })</td>

创建了两个匿名类,第一个传递Id,第二个传递类。我离开这个话题,也许有人会觉得这很有用:)

答案 1 :(得分:0)

它不起作用,因为在第4个参数上,ActionLink正在寻找对象RouteValues ,这基本上意味着这些值将在Controller上传递。下一个参数(第5个)是对象HTMLAttributes ,它将是您链接元素的HTML属性:

public static MvcHtmlString ActionLink(
this HtmlHelper htmlHelper,
string linkText,
string actionName,
string controllerName,
object routeValues, -- for passing values on your controller
object htmlAttributes -- for html attributes like css, etc.
)

所以你需要把它改成:

<td>@Html.ActionLink("Sprawdź","Details","Home", new { intID = @Model.YourPropertyIdName }, new { @Id = Model.YourPropertyIdName, @class = "btn btn-info" })</td> 

在控制器上,它应与参数名称上的属性名称匹配。

正如您所注意到的,我在ActionLink上传递了intID,因此它也应该在您的控制器上匹配

public ActionResult Details(int intID = 0)
{
  //TODO:
}