2014-08-28 4 views
0

작동하는 Ajax.RouteLink가 있습니다. 조각을 추가하고 싶습니다. 올바른 구문을 알아낼 수 없습니다. 조각없이Ajax.RouteLink에서 fragment를 사용하는 방법?

작동 경로 :

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 단편 : routeValues와 htmlAttributes와

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: new System.Web.Routing.RouteValueDictionary() { caseNo = caseNo, controller = controllerName, option = contentOption } 

를하지만 그때 컴파일러 내 라우팅 PARMS (caseNo, 컨트롤러, 옵션)에 대한 불평 :

나는 시도했다.

또한 프로토콜과 호스트 이름을 변경하지 않으므로 null로 남겨 두어도 괜찮습니까?

답변

1

게시자가 게시 한 Ajax.RouteLink의 두 통화에 대해 htmlAttributes에서 Class을 사용하는 것이 유일한 문제입니다. 예약어이기 때문에 Class을 사용할 수 없습니다. 해결 방법은 @의 접두사 (예 : @class)입니다.

죄송합니다. 나는 문법 강조에 의해 속았다 고 생각한다. 어쨌든, 다시 한번 살펴본 후, 나는 당신의 문제를 발견했습니다. 나는 Ajax.* 도우미를 개인적으로 사용하지 않기 때문에 그들의 서명에 익숙하지 않습니다. 그래서 을 살펴 보았습니다. 단순히 fragment 익명 객체를 routeValueshtmlAttributes으로 전달할 수있는 과부하가 없습니다. fragment 버전을 사용하려면 routeValueshtmlAttributes에 각각 RouteValueDictionaryIDictionary<string, object>을 전달해야합니다.

RouteValueDictionary의 문제는 실제로 사전 멤버로 초기화해야하므로 caseNo = caseNo이 아닌 { "caseNo", caseNo }입니다.

+0

클래스는 예약되어 있지만 클래스는 아닙니다. 첫 번째 호출이 작동하는 것에 상관없이 그것이 현재 오류가 아니어도 관계 없습니다. – RitchieD

+0

아 .... 설명 된대로 RouteValueDictionary와 그 컴파일을 수정했습니다. :) 감사. – RitchieD

+0

routeValues ​​: new System.Web.Routing.RouteValueDictionary {{ "caseNo", caseNo}, { "컨트롤러", 컨트롤러 이름}, { "옵션", contentOption}}, – RitchieD

관련 문제