全站点jQuery函数,引用模型属性

时间:2018-03-13 22:01:50

标签: jquery asp.net asp.net-mvc

我在一个页面中使用jQuery函数,类似于下面的内容:

//change the Office dropdown list when the Site selection changes
    $(document).ready(function () {

            $('#SiteID').change(function () {
                var officeUrl = '@Url.Content("~/")' + "Admin/GetJsonObjectsFromOffices";
                var ddlsource = "#SiteID";
                //get the office list
                $.getJSON(officeUrl, { SiteID: $(ddlsource).val() }, function (data) {
                    var items = "";
                    $("#OfficeID").empty();
                    $.each(data, function (i, office) {
                        items += "<option value='" + office.value + "'>" + office.text + "</option>";
                    });
                    $('#OfficeID').html(items);

                    //set the select default for Office dropdown
                    addSelectOption("OfficeID");

                    //set the site selection based on model data
                    $('#OfficeID').val(@Model.OfficeID);

                    updateSiteName();
                });
            });

            function updateSiteName(){
                var dropdownSelection = document.getElementById("SiteId");
                var siteName = dropdownSelection.options[dropdownSelection.selectedIndex].text;
                document.getElementById("SiteName").value = siteName;
            }
});

理想情况下,我想把它放在一个全网站的.js文件中,这样我就不必将它包含在每个页面中。我会在<head>文件的_Layout.cshtml

中引用该脚本
<script src="~/js/site.js"></script>

问题是,当我像这样包含它时它不再有效。我在@Model.OfficeID行上得到一条波浪线,因为.js文件没有要引用的模型。有没有办法写这一次并将其包含在我的所有页面中而不是分别包含在每个页面中?

1 个答案:

答案 0 :(得分:0)

您希望在许多页面上拥有@ Model.OfficeId值,这意味着您拥有布局页面或共享页面。

如果第1点正常,则在shared.cshtml(任何共享的cshtml文件)中创建一个隐藏的输入元素,并通过公共基本控制器或您获取它的位置设置该值。

root

设置完成后,您可以在share.cshtml文件中的任何位置使用$('#officeId')。val()的值。