[英]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.