1

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

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

剃刀脚本:

   @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)
            {

非常感谢任何帮助。谢谢

4

1 回答 1

1

尝试:

ViewContext.RouteData.Values["selectCategory"]

至于 javascript,您将 dom 引用传递给选择列表,而不是所选项目。如果你想看到它的价值,你需要使用

alert(selectCategory.value)
于 2013-01-11T11:05:21.300 回答