【问题标题】:Getting html select value on postback在回发时获取 html 选择值
【发布时间】:2012-12-25 22:50:12
【问题描述】:

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

我在 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)
            {

非常感谢任何帮助。 谢谢

【问题讨论】:

    标签: asp.net razor umbraco


    【解决方案1】:

    试试:

    ViewContext.RouteData.Values["selectCategory"]
    

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

    alert(selectCategory.value)
    

    【讨论】:

      猜你喜欢
      • 2014-12-25
      • 2022-07-16
      • 2017-05-04
      • 1970-01-01
      • 1970-01-01
      • 2013-05-30
      • 1970-01-01
      • 1970-01-01
      • 2018-09-19
      相关资源
      最近更新 更多