2014-08-28 96 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