0

cshtmlページに次のコードがあります。

 <div class="buttons">
    <button type="button" id="export" class="export-inventory-button" onclick="location.href='@Url.Action("ExportInventory", "Inventory")'">EXPORT INVENTORY</button>
</div>

ビューモデルでこれを機能させるにはどうすればよいですか?

ほとんど理解できたと思いますが、助けが必要です

<div class="buttons">
    <button type="button" id="export" class="export-inventory-button" data-bind="click: exportInventory">EXPORT INVENTORY</button>
</div>

私のビューモデルには次のコードがあります:

 function exportInventory() {
                filtererGridData = vm.details;

                var json = ko.mapping.toJSON(vm.details);

                $.ajax({ url: '/Inventory/ExportInventory', type: 'POST' }).done(function (data) {
                    $('#export').html(data);
                }).fail(function (data) {
                    toastr.warn('Could not export data, please contact LGL.');
                });
            }

これを試しましたが、エラーが発生します:

function exportInventory() {
                filtererGridData = vm.details;

                var json = ko.mapping.toJSON(vm.details);

                $.ajax({ url: 'location.href="@Url.Action("ExportInventory", "Inventory")"', type: 'POST' }).done(function (data) {
                    window.location.href = responseText.url;
                    $('#export').html(data);
                }).fail(function (data) {
                    toastr.warn('Could not export data, please contact LGL.');
                });
            }

誰かがこれを理解するのを手伝ってくれますか?

4

1 に答える 1

1

URL を ajax 呼び出しに渡そうとしている方法は、おそらく期待どおりに機能していません。また、呼び出しlocation.href=の url パラメータの一部である必要はありません。$.ajax()

ビュー モデルが cshtml ページの script タグでコード化されている場合は、次のことを試すことができます。

<!-- cshtml razor view code for generating the html is above this line -->

<script>
    var viewModel = {
        function exportInventory() {
            filtererGridData = vm.details;

            var json = ko.mapping.toJSON(vm.details);

            //allow razor to build a javascript string for you when it renders the html
            //when the browser parses this script, it will just see a simple string
            var myURL = '@Url.Action("ExportINventory", "Inventory")';

            //pass your variable to the jQuery ajax call
            $.ajax({ url: myURL, type: 'POST' }).done(function (data) {
                window.location.href = responseText.url;
                //this line of code would never be called because the browser has navigated away from this page...
                $('#export').html(data);
            }).fail(function (data) {
                toastr.warn('Could not export data, please contact LGL.');
            });
        }
    };
</script>

ページを読み込んでソースを表示します。行が文字列としてのコントローラーへの正しい URL である場合、var myUrl =かみそりが開始され、レンダリング時にそれが準備されたことがわかります。

于 2013-05-25T14:08:13.830 に答える