1

スクリプトがビューに記述されているときに正常に機能するいくつかの部分ビューを返すために、いくつかの ajax 呼び出しを行っています。

スクリプトコードは

<script type="text/javascript">
$.ajax({
    url: "@(Url.Action("ProjectPartial", "Project"))",
    contentType: 'application/html; charset=utf-8',
    type: 'POST',
    dataType: 'html',
    data: {
        documentType: $('#DocumentType').val(),
        sectionName: $('#SectionName').val()
    }
})
.success(function (result) {
// Display the section contents.
$('#Projects').html(result);
})
.error(function (xhr, status) {
alert(xhr.responseText);
});
</script>

私がやりたいのは、これらを renderpartial.js という javascript ファイルに保存して、1 つのファイルに ajax 呼び出しを追加し、すべてのビューにそれらを書き込まないようにすることです。

これが可能かどうか誰にもわかりますか?

入れてみました

<script src="~/Scripts/RenderPartial.js"></script>

私のページの上部にありますが、私が得るのはエラー関数だけです。

4

4 に答える 4

7

@(Url.Action(jsファイルに移動できないようにインラインかみそり構文を使用している限り

次のようにURLを指定することで実行できます

url: '/Project/ProjectPartial',

またはView.cshtmlで

<script type="text/javascript">
var projectUrl="@(Url.Action("ProjectPartial", "Project"))"
</script>

RenderParial.js で

url: projectUrl,
于 2013-10-04T15:40:46.247 に答える
2

それには 2 つの方法があります。

  1. AJAX.BeginFormを使用する。これを使用すると、javascript/jquery ajax 呼び出しを記述しなくて済みますが、フォームが 1 つしかない場合に便利です。フォームがレンダリングされると、ビューが非常にきれいになる JavaScript が作成されます。
  2. 私は通常、html5 のdata-属性を使用して、js ファイルのビューから簡単に利用できるような種類のデータを読み取ります。ビューでサーバーから何かを読み取り、そのデータに JavaScript コード (主に別のビュー) でアクセスする必要がある場合が多いためです。Razor Syntac を使用して、次 data-のようにデータを属性に入れます。

    //I assume you write this attribute in any control like this

    data-url="@(Url.Action("ProjectPartial", "Project")"

    //or if you want to write it in any html helper control as html attribute like this

    new { data_url="@(Url.Action("ProjectPartial", "Project")"}

これで、外部 js ファイルで、ajax 呼び出し中に URL を読み取ることができます。必要に応じて多くのデータ属性を記述し、タイプポスト/取得、コンテンツタイプなどのデータを提供するための剃刀構文を作成できます。次のように使用します。

$.ajax({
    url: $('anyinput').attr('data-url');,
    contentType: 'application/html; charset=utf-8',
    type: 'POST',
    dataType: 'html',
    data: {
        documentType: $('#DocumentType').val(),
        sectionName: $('#SectionName').val()
    }
})
.success(function (result) {
// Display the section contents.
$('#Projects').html(result);
})
.error(function (xhr, status) {
alert(xhr.responseText);
});
于 2013-10-04T16:03:10.740 に答える
0

以下をjsファイルに移動してみてはいかがでしょうか。

function getPartial(UrlToGet) {
    $.ajax({
        url: UrlToGet,
        contentType: 'application/html; charset=utf-8',
        type: 'POST',
        dataType: 'html',
        data: {
            documentType: $('#DocumentType').val(),
            sectionName: $('#SectionName').val()
        }
    })
    .success(function (result) {
        // Display the section contents.
        $('#Projects').html(result);
    })
    .error(function (xhr, status) {
        alert(xhr.responseText);
    });
}

そしてあなたの見解では:

<script type="text/javascript">
$(function () {
    getPartial('@(Url.Action("ProjectPartial", "Project"))');
});
</script>
于 2013-10-04T15:48:47.717 に答える