【问题标题】:Call parent view's javascript function from partial view's javascript function从部分视图 javascript 函数调用父视图 javascript 函数
【发布时间】:2015-06-24 13:38:28
【问题描述】:

我在父视图中有一个javascript函数Check(),而这个父视图有一个称为子视图的局部视图。这个子视图有一个java脚本函数,它会在一个锚标签点击后触发,然后调用我父视图的Check()函数。

所以我需要从这个局部视图的函数中调用父视图的Check() 函数。 只是将父视图的脚本函数放在局部视图中不会调用Check()。我该怎么做,请纠正我这个问题

这是我到目前为止所做的,

我的部分视图脚本函数看起来像

function supp_checkAndReset(elem) {
    var currentSelected = $(elem).attr('id');
    $('.supp_panelfilterresultholder span[title="' + currentSelected + '"]').remove();
    $('.supp_panelfiltersuggestion input[value="' + currentSelected + '"]').prop('checked', false);

    Check();
 }

和我的父视图脚本功能下的脚本标签看起来像

 function Check() {
        var supp_fullCheckList = $("#supp_filterWithThis").val();
        var practice_fullCheckList = $("#practice_filterWithThis").val();
        var county_fullCheckList = $("#county_filterWithThis").val();
        var state_fullCheckList = $("#state_filterWithThis").val();

        var ratebase_sliderValue = $("#ratebase_sliderValue").val();
        var clientRating_sliderValue = $("#clientRating_sliderValue").val();
        var panelRating_sliderValue = $("#panelRating_sliderValue").val();

        $.ajax({
            url: '@Url.Action("GetSearchResultBasedOnFilters", "SearchResult")',
            type: 'GET',
            data: {
                supp_fullCheckList: supp_fullCheckList, practice_fullCheckList: practice_fullCheckList, county_fullCheckList: county_fullCheckList,
                state_fullCheckList: state_fullCheckList, ratebase_sliderValue: ratebase_sliderValue, clientRating_sliderValue: clientRating_sliderValue, panelRating_sliderValue: panelRating_sliderValue
            },
            success: function (response) {
                var totRecordCount = $('#RecordTotalCount').val();

                $('#TotRecordCount').html(totRecordCount);

                $('#searchArea').html('');
                $('#searchArea').html(response);
            },
        error: function (xhr, status, error) {
            alert(status + " : " + error);
        }});
    }

【问题讨论】:

  • 使用开发工具检查控制台是否有错误
  • 我检查并显示检查未定义
  • 更好的方法是在单独的 js 文件中添加 js 并将其包含在主布局中
  • @EhsanSajjad 我和你说的一样,但现在我收到控制台错误为“路径中的非法字符”
  • 局部视图不应该包含脚本。将其包含在主视图中。

标签: javascript asp.net-mvc


【解决方案1】:

我有同样的问题。将 java 脚本函数 supp_checkAndReset(elem)Check() 保留在主视图中,即在父视图中。所以它可以从视图和局部视图访问。

父视图中应该是这样的。

<script type="text/javascript">
function supp_checkAndReset(elem) {
var currentSelected = $(elem).attr('id');
$('.supp_panelfilterresultholder span[title="' + currentSelected + '"]').remove();
$('.supp_panelfiltersuggestion input[value="' + currentSelected + '"]').prop('checked', false);

Check();
}
 function Check() {
    var supp_fullCheckList = $("#supp_filterWithThis").val();
    var practice_fullCheckList = $("#practice_filterWithThis").val();
    var county_fullCheckList = $("#county_filterWithThis").val();
    var state_fullCheckList = $("#state_filterWithThis").val();

    var ratebase_sliderValue = $("#ratebase_sliderValue").val();
    var clientRating_sliderValue = $("#clientRating_sliderValue").val();
    var panelRating_sliderValue = $("#panelRating_sliderValue").val();

    $.ajax({
        url: '@Url.Action("GetSearchResultBasedOnFilters", "SearchResult")',
        type: 'GET',
        data: {
            supp_fullCheckList: supp_fullCheckList, practice_fullCheckList: practice_fullCheckList, county_fullCheckList: county_fullCheckList,
            state_fullCheckList: state_fullCheckList, ratebase_sliderValue: ratebase_sliderValue, clientRating_sliderValue: clientRating_sliderValue, panelRating_sliderValue: panelRating_sliderValue
        },
        success: function (response) {
            var totRecordCount = $('#RecordTotalCount').val();

            $('#TotRecordCount').html(totRecordCount);

            $('#searchArea').html('');
            $('#searchArea').html(response);
        },
    error: function (xhr, status, error) {
        alert(status + " : " + error);
    }});
}

【讨论】:

  • 其实什么都没发生
  • 清理解决方案、cookies 并尝试。
  • 我找到了问题不调用或不获取父函数的原因是,我已将 Cehck() 函数放在父视图的文档就绪标记中。当我把它放在外面时,现在我接到了我孩子的电话。非常感谢您的帮助。
猜你喜欢
  • 2020-05-30
  • 2018-05-30
  • 2016-08-15
  • 1970-01-01
  • 1970-01-01
  • 2016-11-13
  • 1970-01-01
  • 2020-08-20
  • 2020-08-29
相关资源
最近更新 更多