簡體   English   中英

如何在Ajax.RouteLink中使用片段?

[英]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文檔 根本就沒有重載,它允許為routeValueshtmlAttributes傳遞一個fragment 匿名對象。 如果要使用fragment版本,則必須分別為routeValueshtmlAttributes傳遞RouteValueDictionaryIDictionary<string, object>

RouteValueDictionary存在的問題是您實際上需要使用字典成員進行初始化,因此{ "caseNo", caseNo }而不是caseNo = caseNo

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM