0

リモート データ ソースにバインドされた Kendo ツリービューを含むビューがあるとします。

@(Html.Kendo().TreeView()
    .Name("schemas")
    .DataTextField("name")
    .DataSource(dataSource => dataSource.Read(read => read.Action("Schemas", "Forms")))
    .Events(events => events
    .Select("onSelected")))

Schemasしたがって、ツリービューは私のアクションを呼び出すだけですFormsController

また、同じページにフォームがあります。これは、フォームを送信するためのテキストボックスとボタンです。

@using (Html.BeginForm("Load", "Forms", FormMethod.Post))
{   
    <div id="rootNode">
        @Html.TextBox("rootElementName")            
        @Html.Button("next")
    </div>
}

だから私は、ユーザー入力を処理し、それをのLoadアクションに渡す最良の方法は何だろうと思っていFormsControllerます。ユーザーは、ツリービューでオプションの 1 つを選択し、値をテキスト ボックスに入力する必要があります。または、すべてのノードが内部にあり、テキストボックスの入力と選択されたノード用に2つの追加フィールドがあるビュー用に何らかのビューモデルを作成する必要がありますか?

4

1 に答える 1

1

フォーム要素を取り出して、次のようにします。

<div id="rootNode">
    @Html.TextBox("rootElementName")            
    @Html.Button("next")
</div>

次の js は、選択時にツリー アイテム ID を取得します。2 番目の関数は、パラメーターを使用してフォーム コントローラー アクションを呼び出します。

<script>
    var selectedNodeid;

    //get the tree selected item id
    function onSelected(e) {
        var data = $('#schemas).data('kendoTreeView').dataItem(e.node);
        selectedNodeid = data.id;
    }

    //button on click event
    $(document).ready(function () {
        $("#next")
        .bind("click", function () {  
           //get parameters then pa
           var id = selectedNodeid;
           var rootElementName = $('#rootElementName).val()
           $.ajax({ 
             url: "Form/Load", 
             data:{id:id,rootElementName:rootElementName},
             success: function () { } 
           });
        }
     })
</script>

私はこれをテストしていませんが、近いはずです。誰かがより良いアプローチを追加することを楽しみにしています。

于 2012-10-29T20:00:47.403 に答える