在回发时获取html选择值

时间:2013-01-11 11:01:04

标签: asp.net razor umbraco

我在这里遇到一些麻烦,希望有人可以提供帮助:

我在razor脚本和onChange中动态填充html select元素我希望获得此发布值。 当页面刷新时它会回发,但我似乎没有得到select的值;我知道的原因是我正在传递一个类别并对其进行过滤。当我手动更改URL中的查询字符串并将其发布时,此过滤功能正常工作。

Razor Script:

   @using umbraco.MacroEngines
@inherits DynamicNodeContext
@{
    dynamic rootNode = @Model.NodeById(1066);
    DynamicNodeList list = rootNode.Descendants();
    List<dynamic> categories = new List<dynamic>(list.Cast<dynamic>());
    List<string> alias = new List<string> { "GeneralPage" };
    var filtered = categories.Where(n => alias.Contains(n.NodeTypeAlias));    
}
<form method="post" action="">
<select id="selectCategory" name="selectCategory" onchange="this.form.submit(); alertMe(selectCategory)">
    @foreach (var node in filtered)
    {
        <option value="@node.Name">@node.Name</option>
    }
</select>
</form>
<script type="text/javascript">
    function alertMe(selectCategory) {
        alert(selectCategory)
    }
</script>

您会注意到我有一个提醒所选值的功能,但这会以[object HTMLSelectElement]

的形式返回

如果需要,我可以发布更多代码来显示服务器上发生了什么,但正如我所说过滤功能正常,但是我尝试以下列方式捕获值:

string category = Request["selectCategory"];
            if (category != null)
            {

任何帮助非常感谢。 感谢

1 个答案:

答案 0 :(得分:1)

尝试:

ViewContext.RouteData.Values["selectCategory"]

对于javascript,您将dom引用传递给选择列表,而不是所选项目。如果要查看它的值,则需要使用

alert(selectCategory.value)