挂钩javascript到下拉列表更改

时间:2014-08-27 16:43:19

标签: c# javascript html razor asp.net-mvc-5

¡HOLA!

我目前的任务是建立一个页面,通过下拉列表,用户可以选择一个套牌标题。一旦选择了标题,该页面应该回发该套牌上的详细信息。

这就是我现在所拥有的:

@model IEnumerable<SCATChartsMVC.Models.Charts_DeckList>

@{
    ViewBag.Title = "Index";

    if (IsPost) { ViewBag.Title = "We posted back!"; }
}

<h2>Index</h2>

@{ var list = ViewData.Model.Select(cl => new SelectListItem
                                {
                                    Value = cl.RecNum.ToString(),
                                    Text = cl.DeckTitle.ToString()
                                });
}


@using (Html.BeginForm("Details", "Charts_DeckList", FormMethod.Post)) 
{ 
    @Html.DropDownList("deckTitles", list, "---------select---------")

    <input type="submit" name="submit" value="Submit" />
    @Html.ActionLink("Details", "Details", "Charts_DeckList", new { id = list.ElementAt(4).Text }, "")

}

<script src="~/Scripts/jquery-1.10.2.js"></script>
<script>
    $("deckTitles").change(function () {
        if ($("#deckTitles").val() != "") {
            var test = {};
            test.url = "/Charts_DeckList/Details";
            test.type = "POST";
            test.data = JSON.stringify($('#deckTitles').val());
            test.datatype = "json";
            test.contentType = "application/json";
            test.success = true;
            test.error = function () { alert("Error!"); };
            $.ajax(test);
        }
    })
</script>

Html.BeginForm下的输入标记和ActionLink是出于我自己的测试目的;如果我指定元素,ActionLink可以正常工作。我希望能够在用户点击选择时传递类似的内容,而不是每当他们点击“详细信息”按钮时。

提交输入标记不起作用。它确实正确地路由到Charts_DeckList / Details,但是action中的参数始终为null。

我刚刚进入整个MVC / Web rigamarole,所以有很多我不知道我甚至不知道我不知道。虽然我已经在互联网上看到了许多不同的资源,这些资源显示出不同的东西,但是此时很多网络开发术语都在我身上丢失了,而且自从VS以来,这些东西的大部分工作方式都在我身上消失了。似乎自动将这么多的东西放在一起。

任何指针都将不胜感激。谢谢。


巴雷克的建议如下是正确的!

我还必须将脚本标记移动到BeginForm括号中,抬头。

1 个答案:

答案 0 :(得分:0)

您没有在那里设置DropDownList的ID,第一个参数设置下拉列表的name属性(用于标识服务器回发时POST变量集合中的值) - 您'我需要添加另一个参数来设置ID:

@Html.DropDownList("deckTitles", list, "---------select---------", new { @id = "deckTitles" });

然后,您可以按如下方式在jQuery中选择所选值:

$("#deckTitles option:selected").val();