传递变量从CSHTML剃刀的jquery(passing a variable from cshtm

2019-09-21 18:03发布

我有我的页面调用如下的局部视图: -

@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>

现在,这个完美的作品,但我需要找到一种方式来传递动态VAR,而不是硬编码瓦尔这样: -

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

在模型我把所有的增值经销商,但我不知道我怎样才能将它们插入到Jquery的。 任何帮助将非常感谢!

--------- UPDATE -----------------------

这是我投入需要的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>

新的JavaScript在ImageGallery: -

<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>

现在这工作正常

Answer 1:

您可以隐藏字段添加到您的视图,并绑定数据形成的模型。 然后,你可以轻松地阅读从jQuery的这个值。

视图:

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

脚本:

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

你也可以把这个hiddens到您的局部视图。 如果您的局部视图不是强类型的变化HiddenFor为隐藏。 你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>

在这种情况下,你不需要把hiddens到每个需要的ImageGallery CSHTML。



Answer 2:

您可以设置隐藏字段或只是声明的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;
});

});



文章来源: passing a variable from cshtml razor to jquery