5

次のようにページで呼び出している部分的なビューがあります:-

@Html.Partial("~/Views/Shared/ImageGallery.cshtml", Model)

このページの実際の Jquery のコードは次のとおりです。

<script type="text/javascript">
    $(document).ready(function () {

        $('.modal_block').click(function (e) {
            $('#tn_select').empty();
            $('.modal_part').hide();
        });

        $('#modal_link').click(function (e) {
            $('.modal_part').show();
            var context = $('#tn_select').load('/Upload/UploadImage?Page=Article&Action=Edit&id=16', function () {
                initSelect(context);
            });
            e.preventDefault();
            return false;
        });

    });
</script>

これで完全に機能しますが、ハードコードされた変数の代わりに動的変数をこれに渡す方法を見つける必要があります:-

Upload/UploadImage?Page=Article&Action=Edit&id=16

モデルにはすべての変数がありますが、それらを Jquery に挿入する方法がわかりません。どんな助けでも大歓迎です!

- - - - -アップデート - - - - - - - - - - - -

これは、ImageGallery を必要とする各 cshtml に入れているコードです。

</div>
    @Html.HiddenFor(model => model.PageViewModel.Page.PageTitle, new { id = "PageTitle"});
    @Html.HiddenFor(model => model.PageViewModel.Page.PageAction, new { id = "PageAction"});
    @Html.HiddenFor(model => model.ArticleViewModel.Article.ArticleID, new { id = "ArticleID"});
<div>
    @Html.Partial("~/Views/Shared/ImageGallery.cshtml", Model)
</div>

ImageGallery の新しい Javascript :-

<script type="text/javascript">

    var pageTitle = $('#PageTitle').val();
    var pageAction = $('#PageAction').val();
    var id = $('#ArticleID').val();
    $(document).ready(function () {
        $('.modal_block').click(function (e) {
            $('#tn_select').empty();
            $('.modal_part').hide();
        });
        $('#modal_link').click(function (e) {
            $('.modal_part').show();
            var context = $('#tn_select').load('/Upload/UploadImage?Page=' + pageTitle + '&Action=' + pageAction + '&id=' + id, function () {
                initSelect(context);
            });
            e.preventDefault();
            return false;
        });
    });

</script>

これで問題なく動作します

4

3 に答える 3

19

ビューに隠しフィールドを追加し、モデルからデータをバインドできます。次に、この値を jQuery から簡単に読み取ることができます。

意見:

@Html.HiddenFor(model => model.Id, new { id = "FieldId"});

脚本:

var id= $('#FieldId').val();

また、この非表示を部分ビューに入れることもできます。部分ビューが厳密に型指定されていない場合は、HiddenFor を Hidden に変更します。ImageGallery 部分ビューには、次の div が含まれている必要があります。

</div>
    @Html.Hidden("PageTitle", Model.PageViewModel.Page.PageTitle);
    @Html.Hidden("PageAction", Model.PageViewModel.Page.PageAction);
    @Html.Hidden("ArticleID", Model.ArticleViewModel.Article.ArticleID);
<div>

この場合、ImageGallery を必要とするすべての cshtml に隠し要素を配置する必要はありません。

于 2012-08-27T07:18:07.400 に答える
3

次のように、非表示のフィールドを設定するか、javascript 変数を宣言して、モデルまたは Viewbag から値を設定することができます。

var action = @Model.action;

また

var id = @ViewBag.id;

そして、あなたはそれをあなたのコードで使うことができます

<script type="text/javascript">

var action = @Model.action;
var id = @ViewBag.id;
$(document).ready(function () {

$('.modal_block').click(function (e) {
    $('#tn_select').empty();
    $('.modal_part').hide();
});
$('#modal_link').click(function (e) {
    $('.modal_part').show();
    var urlToLoad = "/Upload/UploadImage?Page=Article&Action=" + action + "&id=" + id;
    var context = $('#tn_select').load(urlToLoad, function () {
        initSelect(context);
    });
    e.preventDefault();
    return false;
});

});

于 2012-08-27T07:24:33.013 に答える