1

誰かが助けてくれることを願って、私はここで少し問題を抱えています:

私はかみそりスクリプトでhtml select要素を動的に設定しています.onChangeは、この投稿された値を取得したいと考えています。ページが更新されているのでポストバックしていますが、選択の値を取得していないようです。私が知っている理由は、カテゴリを渡してそれをフィルタリングしているからです。このフィルタリングは、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 に答える