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 回答
0

以下是另一种解决方案。我需要将 web.config 中声明的 api url 传递给 JavaScript(在本例中为 Jquery)

  1. 在 Razor 中声明一个变量 @{var apiUrl= @System.Configuration.ConfigurationManager.AppSettings["BlogsApi"];}
  2. 然后在 JavaScript var apiUrl = '@apiUrl';
于 2020-07-24T19:47:45.837 回答