将变量从cshtml razor传递给jquery

Joh*_*ann 5 c# asp.net-mvc jquery razor

我有一个部分观点,我在页面上调用如下: -

@Html.Partial("~/Views/Shared/ImageGallery.cshtml", Model)
Run Code Online (Sandbox Code Playgroud)

此页面的实际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>
Run Code Online (Sandbox Code Playgroud)

现在这很完美,但是我需要找到一种方法来传递动态变量而不是硬编码变量:

Upload/UploadImage?Page=Article&Action=Edit&id=16
Run Code Online (Sandbox Code Playgroud)

在模型中我有所有变量,但是我不知道如何将它们插入到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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

这现在工作正常

Art*_*kov 19

您可以向视图添加隐藏字段,并将数据绑定到模型中.然后,您可以轻松地从jQuery中读取此值.

视图:

@Html.HiddenFor(model => model.Id, new { id = "FieldId"});
Run Code Online (Sandbox Code Playgroud)

脚本:

var id= $('#FieldId').val();
Run Code Online (Sandbox Code Playgroud)

你也可以将这些隐藏在你的局部视图中.如果您的局部视图不是强类型,请将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>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您不需要将hiddens放入需要ImageGallery的每个cshtml.