0

ドロップダウンに基づいてページにリンクを生成する JavaScript 関数があります。2 か所で JavaScript 関数をチェックしています。DropDown が属性「onchange」で変更されたとき、およびページがロードされたとき。viewbag の要素なしでページが読み込まれると、エラーが生成されます。私の JavaScript は、viewbag の情報なしでリンクを生成するための null 要素を認識していません。

<p>Pesquisar por: @Html.DropDownList("tipoPesquisa", ViewBag.DropDownPesquisa as SelectList, new { onchange = "alteraFiltro()" }) 



<div id="dadosFornecedor">
        @if (ViewBag.CurrentFornecedor != null)
        {
            <fieldset>
                <legend>@ViewBag.CurrentFornecedor.RazaoSocial</legend>
                <b>Razão Social:</b> @ViewBag.CurrentFornecedor.RazaoSocial <b>Endereço:</b> @ViewBag.CurrentFornecedor.Endereco
                @Html.Hidden("idFornecedor", new { IdFornecedor = ViewBag.CurrentFornecedor.IdFornecedor })
                <input type="button" class="btn" onclick="removerFornecedor();" value="Remover Fornecedor" />
                <br />
                <br />
            </fieldset>
            <br />

        }
    </div>


<script type="text/javascript">
    $(function () {

       alteraFiltro();
    });

    function removerFornecedor() {
        var div = $("#dadosFornecedor");
        var hidden = $("#idFornecedor");
        div.empty();

        div.append("<input type='hidden' name='deletarFornecedor' value='true' />")

    }

        function alteraFiltro() {
            var urlCodigo = $("#linkCodigo");
            var urlLancamento = $("#linkLancamento");
            var urlPagamento = $("#linkPagamento");
            var urlFornecedor = $("#linkFornecedor")
            var dropValue = $("#tipoPesquisa").val();
            var hidden = $("#idFornecedor");

            if (hidden.val() == "" || hidden.val() == null || hidden == null) {
                urlCodigo.attr("href", "saidasDiversas?sortOrder=@ViewBag.CodigoSortParm&currentFilter=@ViewBag.CurrentFilter&currentDrop=" + dropValue + "");
                urlLancamento.attr("href", "saidasDiversas?sortOrder=@ViewBag.DataLancamentoSortParm&currentFilter=@ViewBag.CurrentFilter&currentDrop=" + dropValue + "");
                urlPagamento.attr("href", "saidasDiversas?sortOrder=@ViewBag.DataPagamentoSortParm&currentFilter=@ViewBag.CurrentFilter&currentDrop=" + dropValue + "");
                urlFornecedor.attr("href", "saidasDiversas?sortOrder=@ViewBag.FornecedorSortParm&currentFilter=@ViewBag.CurrentFilter&currentDrop=" + dropValue + "")
            } else{
                urlCodigo.attr("href", "saidasDiversas?sortOrder=@ViewBag.CodigoSortParm&idFornecedor=@ViewBag.CurrentFornecedor.IdFornecedor&currentFilter=@ViewBag.CurrentFilter&currentDrop=" + dropValue + "");
                urlLancamento.attr("href", "saidasDiversas?sortOrder=@ViewBag.DataLancamentoSortParm&idFornecedor=@ViewBag.CurrentFornecedor.IdFornecedor&currentFilter=@ViewBag.CurrentFilter&currentDrop=" + dropValue + "");
                urlPagamento.attr("href", "saidasDiversas?sortOrder=@ViewBag.DataPagamentoSortParm&idFornecedor=@ViewBag.CurrentFornecedor.IdFornecedor&currentFilter=@ViewBag.CurrentFilter&currentDrop=" + dropValue + "");
                urlFornecedor.attr("href", "saidasDiversas?sortOrder=@ViewBag.FornecedorSortParm&idFornecedor=@ViewBag.CurrentFornecedor.IdFornecedor&currentFilter=@ViewBag.CurrentFilter&currentDrop=" + dropValue + "")
            }

        }


    </script>
4

1 に答える 1

0

ビューが最初にロードされたときに値がないことが原因で問題が発生している場合はViewBag.CurrentFornecedor、次の行に沿ってJavaScriptを変更してみてください。

 var hidden = $("#idFornecedor");

 if (hidden.val() == "" || hidden.val() == null || hidden == null) {

 // ...

 }
 else {

    urlCodigo.attr("href", "saidasDiversassortOrder=@ViewBag.CodigoSortParm&idFornecedor=" 
         + @{ViewBag.CurrentFornecedor != null ? ViewBag.CurrentFornecedor.IdFornecedor : -1} 
        + "&currentFilter=@ViewBag.CurrentFilter&currentDrop=" + dropValue + "");

    // ...

}
于 2012-11-17T16:59:04.437 に答える