2017-12-19 13 views
0

これで半日を無駄にしました。バグが見つかってからかなり長い時間がかかりましたので、しばらくお待ちしておりますので、他の誰かを助ける場合に備えてこれを共有しています。

状況:あなたはMVC上でOKですが、HTMLではOKですが、JQueryのようなクライアントスクリプトでは不安定です。デバッグを使用すると、コントローラのアクションこのような何かを呼び出すときことを示しています

public ActionResult CourseNameShow(int? courseId) 
     { 

その後、courseIdパラメータがOKに設定されて初めて、再び自分自身を呼び出すようです!私は次のようなものを探してJQueryの呼び出しを受けました:

function AfterCourseNameChoose(thisCourseId) { 

    // after choosing a different course, displays its name 
    $.post("/cart/coursename/show/", { courseId: thisCourseId }) 

何がうまくいかない可能性がありますか?

答えて

0

したがって、ハイパーリンク用のHTMLはすべてダウンしています。私が持っていた:

<a href="/cart/coursename/show/" 
class="woCartButton" 
onclick="AfterCourseNameChoose($('#CourseId').val())"> 

これは、あなたがリンクをクリックしたときに表示jQueryのルーチンを呼び出しますが、その後もHREF属性でURLに行く - これ二回、コントローラのアクションを呼び出します。解決策は、イベントハンドラからfalseを返すことです:あなたにおそらく本当に明らか

function AfterCourseNameChoose(thisCourseId) { 

    // after choosing a different course, displays its name 
    $.post("/cart/coursename/show/", { courseId: thisCourseId }) 

    .done(function (response) { 
     $("#frmCourseName").html(response); 
    }); 

    return false; 

} 

が、URLに二重のコールを見下ろすと、ちょうど私にいくつかの費用:

<a href="/cart/coursename/show/" 
class="woCartButton" 
onclick="return AfterCourseNameChoose($('#CourseId').val())"> 

My機能その後、falseを返します時間の時間!これが誰かを助けることを望みます。

+0

もっと良い解決策は、 'on *'属性の時代遅れの使用を完全に避け、控えめなイベントハンドラを使うことです。 –

関連する問題