jQuery没有从Partial View中获取正确的值

时间:2014-07-31 10:30:10

标签: javascript jquery asp.net-mvc

我在部分视图中有隐藏字段

@Html.HiddenFor(model => model.Type, new { id = "Type" })

在我的JS for document.ready函数中的页面我试图使用以下方法获取此Field的值:

var type = $('#Type').val();

alert(type);

值Type在两个局部视图中设置,然后渲染另一个局部视图,如下所示:

    @using (Html.BeginForm())
    {
        @Html.AntiForgeryToken()
        { Model.Type = TypeEnum.Diesel; }
        <p>
            @{ Html.RenderPartial("_MyOtherView"); }
        </p>
    }

    @using (Html.BeginForm())
    {
        @Html.AntiForgeryToken()
        { Model.Type = TypeEnum.Petrol; }
        <p>
            @{ Html.RenderPartial("_MyOtherView"); }
        </p>
    }

    @using (Html.BeginForm())
    {
        @Html.AntiForgeryToken()
        { Model.Type = TypeEnum.Electric; }
        <p>
            @{ Html.RenderPartial("_MyOtherView"); }
        </p>
    }

然而,当我在加载内容的标签之间进行导航时,警报只会触发“柴油”。值 - 我将HiddenFors更改为TextBoxFor,在屏幕上我可以看到文本框的内容在Tabs之间移动时更新到Diesel / Petrol / Electric但我无法弄清楚为什么警报没有改变?

1 个答案:

答案 0 :(得分:0)

除非您使用“Type”作为示例ID,否则您似乎渲染了三个局部视图,每个视图都包含ID为“Type”的隐藏输入。结果是一个包含三个输入且相同ID 的页面,如果您尝试按照脚本中的方式获取其值,则会导致冲突。

我建议在它们上面添加类,例如“hiddenInput”,然后将脚本更新为类似的内容:

$('.hiddenInput').each(function() {
    alert($(this).val();
});