Jquery条件,窗口位置和viewdata。天啊!

时间:2011-01-15 07:27:17

标签: jquery asp.net-mvc

我在项目上留下了最后一件事,而且还有一件事。这不仅是我的第一个Web应用程序,而且是我使用Jquery,CSS和MVC的第一个应用程序。我不知道如何处理这个问题。

我想做的是:

在我的控制器中,废物项经过验证,根据结果,可能会发生其中一件事。验证完成后,没有发生任何不良情况,将ViewData [“FailedWasteId”]设置为-9999。它是一个新的废物并且验证没有通过,它将ViewData [“FailedWasteId”]设置为0.它是一个现有的废物并且验证没有通过,这将ViewData [“FailedWasteId”]设置为废物的id

使用

在页面加载时设置此ViewData [“FailedWasteId”]
    <%=Html.Hidden("wFailId", int.Parse(ViewData["WasteFailID"].ToString()))%>

当验证没有通过时,页面将(通过window.location)缩放到一个不可见的div,打开不可见的div等。希望我的意图很清楚,这种对jquery的不良尝试。

新的废物div是现有的物品div是动态生成的(我知道这有效)“&gt;

所以我的问题是......帮助?我甚至无法正确解析数据,甚至无法使条件工作。由于这发生在post之后,我无法获得firebug来帮助我完成调试器,因为脚本尚未加载。

        $(document).ready(function () {
            var wasteId = parseInt($('#wFailId').text());

            if (wasteId == -9999) {
                //No Issue
            }
            else if (wasteId < 0) {
                //Waste not saved to database
            }
            else if (wasteId == 0) {
                //New Waste
                window.location = '#0';
                $('.editPanel').hide();
                $('#GeneratedWasteGrid:first').before(newRow);
                $('.editPanel').appendTo('#edit-panel-row').slideDown('slow');
            }
            else if (wasteId > 0) {
                //Waste saved to database
            }
        });

2 个答案:

答案 0 :(得分:3)

var wasteId = parseInt($('#wFailId').text());

这条线错了。隐藏input元素内的attempts to get the text contents,这是空字符串,因为没有内容存在(例如。“Hello”在<span id="foo">Hello</span>中)。这会导致parseInt()返回值NaN(非数字),导致您的每个条件都失败但不会导致抛出任何JavaScript异常。

您要查找的值作为元素的属性value存在,可使用.val()检索:

var wasteId = parseInt($('#wFailId').val(), 10); // or use:
var wasteId = +$('#wFailId').val();

(JavaScript的unary plus operator是我在必要时用于转换为数字的方法。请注意,在任何情况下,使用parseInt()而不指定基数/基数{{1}是不好的做法。 },因为否则10被解释为八进制数:小数点010。)

答案 1 :(得分:0)