2014-08-28 97 views
0

我有一个工作的Ajax.RouteLink,我想添加一个片段。我无法弄清楚正确的语法。如何在Ajax.RouteLink中使用片段?

不片段工作路线:

return Ajax.RouteLink(
      linkText, 
      routeName, 
      new { caseNo = caseNo, controller = controllerName, option = contentOption }, 
      new AjaxOptions() { UpdateTargetId = "caseContent", HttpMethod = "Post", OnBegin = onBegin, OnSuccess = onSuccess }, 
      new { Class = cssClass + (contentOption != null && contentOption == contentView ? " active" : "") }); 

编译器错误RouteLink与片段:

return Ajax.RouteLink(
      linkText: linkText, 
      routeName: routeName, 
      protocol: null, 
      hostName: null, 
      fragment: fragment, 
      routeValues: new { caseNo = caseNo, controller = controllerName, option = contentOption }, 
      ajaxOptions: new AjaxOptions() { UpdateTargetId = "caseContent", HttpMethod = "Post", OnBegin = onBegin, OnSuccess = onSuccess }, 
      htmlAttributes: new { Class = cssClass + (contentOption != null && contentOption == contentView ? " active" : "") } 
      ); 

错误与routeValues和htmlAttributes。无法从匿名类型转换。

我想:

routeValues: new System.Web.Routing.RouteValueDictionary() { caseNo = caseNo, controller = controllerName, option = contentOption } 

但随后的编译器抱怨我的路由PARMS(caseNo,控制器选项)。

此外,是否可以将协议和主机名为空,因为我没有改变这些?

回答

1

我看到的唯一问题是您在发布的Ajax.RouteLink这两个呼叫的htmlAttributes中使用Class。你不能使用Class,因为它是一个保留字。解决方法是以@为前缀,即@class

对不起,你说得对。我认为,通过语法高亮我被欺骗了。无论如何,在再次看看后,我发现你的问题。我个人不使用任何Ajax.*帮手,所以我不熟悉他们的签名。所以我看了一下the MSDN documentation on the extension method。简单地说,没有超载允许通过fragment匿名对象routeValueshtmlAttributes。如果您想使用fragment版本,那么您必须分别通过RouteValueDictionaryIDictionary<string, object>分别为routeValueshtmlAttributes

RouteValueDictionary您遇到的问题是您需要实际使用字典成员进行初始化,因此{ "caseNo", caseNo }而不是caseNo = caseNo

+0

我相信类是保留,但不是类。不管那是不是我目前的错误,因为第一个电话工作。 – RitchieD 2014-08-28 14:22:53

+0

啊....我重写了RouteValueDictionary描述和它的编译。 :) 谢谢。 – RitchieD 2014-08-28 16:23:07

+0

routeValues:new System.Web.Routing.RouteValueDictionary {{“caseNo”,caseNo},{“controller”,controllerName},{“option”,contentOption}}, – RitchieD 2014-08-28 16:23:53