[英]How to use fragment in 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 }
但是后來,編譯器抱怨我的路由參數(caseNo,controller,option)。
另外,可以將協議和主機名保留為空,因為我沒有更改它們嗎?
我看到的唯一問題是你使用的Class
在htmlAttributes為兩個電話Ajax.RouteLink
您發布。 您不能使用Class
,因為它是保留字。 解決方法是給@
@class
前綴,即@class
。
抱歉,您是對的。 我認為語法突出顯示讓我受騙。 無論如何,在再次查看之后,我發現了您的問題。 我個人不使用任何Ajax.*
助手,因此我對它們的簽名不熟悉。 因此,我看了有關擴展方法的MSDN文檔 。 根本就沒有重載,它允許為routeValues
和htmlAttributes
傳遞一個fragment
和匿名對象。 如果要使用fragment
版本,則必須分別為routeValues
和htmlAttributes
傳遞RouteValueDictionary
和IDictionary<string, object>
。
RouteValueDictionary
存在的問題是您實際上需要使用字典成員進行初始化,因此{ "caseNo", caseNo }
而不是caseNo = caseNo
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.