2014-03-24 3 views
9

이것은 UpdateTarget을 대체해야하지만 전체 페이지를 대체하기 때문에 그 이유를 알 수 없습니다. 올바른 부분 뷰가 반환되지만 대상 ID를 바꾸는 대신 전체 페이지가 대체됩니다. 런타임시Ajax.ActionLink가 UpdateTarget 대신 전체 페이지를 업데이트하는 이유는 무엇입니까?

<div id="magHeader"> 
     <p>this is a test.</p> 
     @Ajax.ActionLink("Edit", "GetEditor", "Home", new AjaxOptions(){ UpdateTargetId = "magHeader", InsertionMode = InsertionMode.Replace}) 
</div> 

는, 링크는 다음과 같습니다 : 내가 잘못하고있는 중이 야 뭔가

<a href="/Home/GetEditor" data-ajax-update="#magHeader" data-ajax-mode="replace" data-ajax="true">Edit</a> 

있습니까? 과거에는 문제없이 성공적으로이 작업을 수행했습니다.

편집 이 문제에 대한 근본적인 이유는 VS 2012 년, 당신은이 일을 할 묶고 JQueryVal에 대한 참조를 추가 할 필요가 있다는 것입니다. 그러나 2013 년 BundleConfig.cs가 변경되어 JQueryVal 번들에 더 이상 JQuery.Unobtrusive가 포함되지 않습니다. 따라서 간단한 해결 방법은 번들에 다시 추가하는 것입니다.

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
        "~/Scripts/jquery.unobtrusive*", 
        "~/Scripts/jquery.validate*")); 

그러면 모두 예상대로 작동합니다.

답변

11

@Scripts.Render("~/bundles/jqueryval")을 어딘가에 페이지에로드 할 것인지 확인하십시오. 눈에 잘 띄지 않는 자바 스크립트 파일이로드되지 않기 때문일 수 있습니다. 이것을 확인하십시오 video

편집 :
packages.config 파일에 패키지가 설치되어 있는지 확인하십시오.

<package id="Microsoft.jQuery.Unobtrusive.Ajax" version="3.1.1" targetFramework="net451" /> 
    <package id="Microsoft.jQuery.Unobtrusive.Validation" version="3.0.0" targetFramework="net451" /> 
+0

좋아요, 그래서 동영상을 보았습니다. 그게 바로 제가 겪고있는 문제입니다. 그러나 아직 해결되지 않았습니다. VS 13의 새로운 새로운 프로젝트를 시작으로 비디오의 단계를 따르고 jqueryval이 포함되어 있는지 확인합니다. 그러나 전체 페이지가 여전히 대체됩니다. FireFox에서 스크립트 탭을 확인하여 jqueryval이로드되고 jquery.validate.unobtrusive.js가로드되는지 확인할 수 있습니다. 그래서 그것은 아무 의미가 없습니다. –

+0

이 패키지를 추가 했습니까 (제 대답 편집) – Mitul

+0

확인했는데 패키지가 설치되지 않았습니다. 그래서 그들을 설치했습니다. 그러나 여전히 동일한 결과를 얻습니다.이 페이지는 이드가 아니라 대체됩니다. –

3

이 때문에 당신의 JQuery와 스크립트 파일 및 JQuery와 눈에 거슬리지 아약스 메인 레이아웃이나 아이 뷰에 포함되지 않습니다이 주된 이유의 발생, 나는 jQuery를 포함, 당신이 그들을 누락 두렵다 , jquery 눈에 거슬리는 아약스 파일과 그것은 매력처럼 작동합니다.

1

아래의 스크립트 파일 참조 추가가 효과적입니다.

<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script> 
관련 문제