繁体   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