我在一个页面中使用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文件中,这样我就不必在每个页面中都包含它。我将在_Layout.cshtml文件的<head>中引用该脚本
<script src="~/js/site.js"></script>问题是,当我像这样包含它时,它不再起作用。由于.js文件没有要引用的模型,所以我在@Model.OfficeID行上看到了一条曲折的线。有没有办法只写一次,然后把它包含在我所有的页面中,而不是分别放在每个页面中?
发布于 2018-03-14 15:21:39
是
您希望在多个页面上具有该@Model.OfficeId值,这意味着您拥有一个布局页面或一个公共共享页面。
如果第1点没问题,那么在shared.cshtml(任何共享的cshtml文件)中创建一个隐藏的输入元素,并通过您的公共基础控制器或从哪里获取它来设置值。
<input id="officeID" type="hidden" value="@Model.OfficeID" />设置完成后,您可以在该share.cshtml文件中的任何位置使用$('#officeId').val()的值。
https://stackoverflow.com/questions/49266556
复制相似问题