2

これは可能かもしれないし、不可能かもしれません(そして、ドキュメントにあるかもしれませんが、私はそれを見逃しました)。

JQueryセレクターを使用できるようにするT4MVCを使用して、ビュー内でUrl.Action()を構成するにはどうすればよいですか。私は(私のjavascriptで)次のことを試みましたが成功しませんでした:

function cancelHoldBooking() {
    var url = '<%= Url.Action(MVC.FundProperty.CancelLock($("#propertyid").val())) %>';
    // other code omitted for brevity
}

私は次のことをうまく行うことができます:

function cancelHoldBooking() {
    var url = '<%= Url.Action("CancelLock", "FundProperty") %>';
    url += "?id=" + $("#propertyid").val();
    // other code omitted for brevity - in this case   
    // **I could of course have used the**:
    // var params = {id: $('#propertyid').val()};
    // **object**
}

答えが来ると、これが「ドウ」の瞬間になることはわかっていますが、私の人生では、これを理解することはできません!!

乾杯...

[編集]-MVC.FundProperty.CancelLock()idパラメーターを省略し、$ ajax呼び出しを介してparamsオブジェクトを送信しようとすると、コンパイラーは呼び出しにパラメーターがないことについて文句を言います。したがって、CancelLock()呼び出し内にパラメーターを指定せずに$ ajax paramsオブジェクトを使用して呼び出すことにより、javascriptmish-mashをバイパスすることはできません。イライラする:(

4

2 に答える 2

5

クライアントとサーバーのコードを、まったく機能しない方法で混在させようとしていると思います。:) <%= ... %> ブロックは純粋なサーバー側コードであるため、JQuery セレクターを使用することはできません。T4MVC でできる最善のことは、次のようなものです。

function cancelHoldBooking() {
    var url = '<%= Url.Action(MVC.FundProperty.CancelLock()) %>';
    url += "?id=" + $("#propertyid").val();
}

アクションとコントローラー名のリテラル文字列からは引き続き節約できますが、パラメーターについては役に立ちません。

于 2010-10-25T20:42:24.140 に答える
3

関数が呼び出されたときにクライアントで実行されて<%= ... %>いる間、サーバーで処理されることに注意する必要があります。$("#propertyid").val()cancelHoldBooking

あなたの問題を解決する1つの方法はこれです:

function cancelHoldBooking() {
    var url = '<%= Url.Action(MVC.FundProperty.CancelLock(999)) %>'; // Provide a magic number
    url += url.replace('999', $("#propertyid").val());  // Replace the magic number
    // other code omitted for brevity - in this case i could 
    // of course have used the params {id: $('#propertyid').val()} object
}
于 2010-10-25T20:44:13.663 に答える