AndreyAkinshin / knockout-mvc

Power of Knockout.js for ASP.NET MVC
http://knockoutmvc.com
203 stars 125 forks source link

A bug or my fault? #24

Closed Bezarius closed 3 years ago

Bezarius commented 11 years ago

View:

@using PerpetuumSoft.Knockout

@model Smev.Astd.DataModel.Context

@{ var ko = Html.CreateKnockoutContext(); }

<fieldset>
    <legend>Изменение контекстного справочника</legend>
    <br />
    @using (var contextDictionary = ko.Foreach(m => m.Dictionaries))
    {
        @ko.Html.HyperlinkButton("[x]", "RemoveDictFromContext", "ContextDictionaryController", new { dictIndex = contextDictionary.GetIndex() })
        <table>
            <tr>
                <td>Идентификатор:</td>
                <td>
                    @contextDictionary.Html.TextBox(m => m.Name)
                </td>
            </tr>
            <tr>
                <td>Отображаемое название:</td>
                <td>
                    @contextDictionary.Html.TextBox(m => m.DisplayName)
                </td>
            </tr>
        </table>
        <br />
        <div>
            <table>
                <tr>
                    <th />
                    <th>Value</th>
                    @using (var key = contextDictionary.Foreach(k => k.Keys))
                    {
                        <th>
                            @key.Html.TextBox(k => k)
                            @ko.Html.HyperlinkButton("[x]", "DeleteKey", "ContextDictionaryController", new { dictIndex = contextDictionary.GetIndex(), keyIndex = key.GetIndex() })
                        </th>
                    }
                    <th>
                        @ko.Html.HyperlinkButton("[+]", "AddKey", "ContextDictionaryController", new { dictIndex = contextDictionary.GetIndex() })
                    </th>
                </tr>
                <tbody>
                    @using (var row = contextDictionary.Foreach(k => k.Rows))
                    {
                        <tr>
                            <td>
                                @ko.Html.HyperlinkButton("Удалить строку", "RemoveRow", "ContextDictionaryController", new { dictIndex = contextDictionary.GetIndex(), rowIndex = row.GetIndex() })
                            </td>
                            <td>
                                @row.Html.TextBox(r => r.Value)
                            </td>

                            @using (var entry = row.Foreach(e => e.Entryes))
                            {
                                <td>
                                    @entry.Html.TextBox(e => e)
                                </td>
                            }
                        </tr>
                    }
                </tbody>
                @ko.Html.HyperlinkButton("[+]", "AddRow", "ContextDictionaryController", new { dictIndex = contextDictionary.GetIndex() })
            </table>
        </div>
        <br />
    }
    @ko.Html.Button("Сохранить", "Save", "ContextDictionaryController").Enable(m => m.Dictionaries.Count > 0)
</fieldset>

@ko.Apply(Model)

Generated HTML(this part):

<fieldset>
    <legend>Изменение контекстного справочника</legend>
    <br>
<!-- ko foreach: Dictionaries -->
<a data-bind="click : function() {executeOnServer(viewModel, '/ContextDictionaryController/RemoveDictFromContext?dictIndex='+$index()+'');}" href="#">[x]</a>        <table>
            <tbody><tr>
                <td>Идентификатор:</td>
                <td>
                    <input data-bind="value : Name">
                </td>
            </tr>
            <tr>
                <td>Отображаемое название:</td>
                <td>
                    <input data-bind="value : DisplayName">
                </td>
            </tr>
        </tbody></table>
        <br>
        <div>
            <a data-bind="click : function() {executeOnServer(viewModel, '/ContextDictionaryController/AddRow?dictIndex='+$index()+'');}" href="#">[+]</a><table>
                <tbody><tr>
                    <th>
                    </th><th>Value</th>
<!-- ko foreach: Keys -->
                        <th>
                            <input data-bind="value : $data">
                            <a data-bind="click : function() {executeOnServer(viewModel, '/ContextDictionaryController/DeleteKey?dictIndex='+$parentContext.$index()+'&amp;keyIndex='+$index()+'');}" href="#">[x]</a>
                        </th>

                        <th>
                            <input data-bind="value : $data">
                            <a data-bind="click : function() {executeOnServer(viewModel, '/ContextDictionaryController/DeleteKey?dictIndex='+$parentContext.$index()+'&amp;keyIndex='+$index()+'');}" href="#">[x]</a>
                        </th>

                        <th>
                            <input data-bind="value : $data">
                            <a data-bind="click : function() {executeOnServer(viewModel, '/ContextDictionaryController/DeleteKey?dictIndex='+$parentContext.$index()+'&amp;keyIndex='+$index()+'');}" href="#">[x]</a>
                        </th>

                        <th>
                            <input data-bind="value : $data">
                            <a data-bind="click : function() {executeOnServer(viewModel, '/ContextDictionaryController/DeleteKey?dictIndex='+$parentContext.$index()+'&amp;keyIndex='+$index()+'');}" href="#">[x]</a>
                        </th>

                        <th>
                            <input data-bind="value : $data">
                            <a data-bind="click : function() {executeOnServer(viewModel, '/ContextDictionaryController/DeleteKey?dictIndex='+$parentContext.$index()+'&amp;keyIndex='+$index()+'');}" href="#">[x]</a>
                        </th>

                        <th>
                            <input data-bind="value : $data">
                            <a data-bind="click : function() {executeOnServer(viewModel, '/ContextDictionaryController/DeleteKey?dictIndex='+$parentContext.$index()+'&amp;keyIndex='+$index()+'');}" href="#">[x]</a>
                        </th>

                        <th>
                            <input data-bind="value : $data">
                            <a data-bind="click : function() {executeOnServer(viewModel, '/ContextDictionaryController/DeleteKey?dictIndex='+$parentContext.$index()+'&amp;keyIndex='+$index()+'');}" href="#">[x]</a>
                        </th>

                        <th>
                            <input data-bind="value : $data">
                            <a data-bind="click : function() {executeOnServer(viewModel, '/ContextDictionaryController/DeleteKey?dictIndex='+$parentContext.$index()+'&amp;keyIndex='+$index()+'');}" href="#">[x]</a>
                        </th>

                        <th>
                            <input data-bind="value : $data">
                            <a data-bind="click : function() {executeOnServer(viewModel, '/ContextDictionaryController/DeleteKey?dictIndex='+$parentContext.$index()+'&amp;keyIndex='+$index()+'');}" href="#">[x]</a>
                        </th>
<!-- /ko -->
                    <th>
                        <a data-bind="click : function() {executeOnServer(viewModel, '/ContextDictionaryController/AddKey?dictIndex='+$index()+'');}" href="#">[+]</a>
                    </th>
                </tr>
                </tbody><tbody>
<!-- ko foreach: Rows -->
                        <tr>
                            <td>
                                <a data-bind="click : function() {executeOnServer(viewModel, '/ContextDictionaryController/RemoveRow?dictIndex='+$parentContext.$index()+'&amp;rowIndex='+$index()+'');}" href="#">Удалить строку</a>
                            </td>
                            <td>
                                <input data-bind="value : Value">
                            </td>

<!-- ko foreach: Entryes -->
                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>
<!-- /ko -->
                        </tr>

                        <tr>
                            <td>
                                <a data-bind="click : function() {executeOnServer(viewModel, '/ContextDictionaryController/RemoveRow?dictIndex='+$parentContext.$index()+'&amp;rowIndex='+$index()+'');}" href="#">Удалить строку</a>
                            </td>
                            <td>
                                <input data-bind="value : Value">
                            </td>

<!-- ko foreach: Entryes -->
                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>
<!-- /ko -->
                        </tr>

                        <tr>
                            <td>
                                <a data-bind="click : function() {executeOnServer(viewModel, '/ContextDictionaryController/RemoveRow?dictIndex='+$parentContext.$index()+'&amp;rowIndex='+$index()+'');}" href="#">Удалить строку</a>
                            </td>
                            <td>
                                <input data-bind="value : Value">
                            </td>

<!-- ko foreach: Entryes -->
                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>
<!-- /ko -->
                        </tr>

                        <tr>
                            <td>
                                <a data-bind="click : function() {executeOnServer(viewModel, '/ContextDictionaryController/RemoveRow?dictIndex='+$parentContext.$index()+'&amp;rowIndex='+$index()+'');}" href="#">Удалить строку</a>
                            </td>
                            <td>
                                <input data-bind="value : Value">
                            </td>

<!-- ko foreach: Entryes -->
                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>
<!-- /ko -->
                        </tr>

                        <tr>
                            <td>
                                <a data-bind="click : function() {executeOnServer(viewModel, '/ContextDictionaryController/RemoveRow?dictIndex='+$parentContext.$index()+'&amp;rowIndex='+$index()+'');}" href="#">Удалить строку</a>
                            </td>
                            <td>
                                <input data-bind="value : Value">
                            </td>

<!-- ko foreach: Entryes -->
                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>
<!-- /ko -->
                        </tr>

                        <tr>
                            <td>
                                <a data-bind="click : function() {executeOnServer(viewModel, '/ContextDictionaryController/RemoveRow?dictIndex='+$parentContext.$index()+'&amp;rowIndex='+$index()+'');}" href="#">Удалить строку</a>
                            </td>
                            <td>
                                <input data-bind="value : Value">
                            </td>

<!-- ko foreach: Entryes -->
                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>
<!-- /ko -->
                        </tr>

                        <tr>
                            <td>
                                <a data-bind="click : function() {executeOnServer(viewModel, '/ContextDictionaryController/RemoveRow?dictIndex='+$parentContext.$index()+'&amp;rowIndex='+$index()+'');}" href="#">Удалить строку</a>
                            </td>
                            <td>
                                <input data-bind="value : Value">
                            </td>

<!-- ko foreach: Entryes -->
                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>
<!-- /ko -->
                        </tr>

                        <tr>
                            <td>
                                <a data-bind="click : function() {executeOnServer(viewModel, '/ContextDictionaryController/RemoveRow?dictIndex='+$parentContext.$index()+'&amp;rowIndex='+$index()+'');}" href="#">Удалить строку</a>
                            </td>
                            <td>
                                <input data-bind="value : Value">
                            </td>

<!-- ko foreach: Entryes -->
                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>
<!-- /ko -->
                        </tr>

                        <tr>
                            <td>
                                <a data-bind="click : function() {executeOnServer(viewModel, '/ContextDictionaryController/RemoveRow?dictIndex='+$parentContext.$index()+'&amp;rowIndex='+$index()+'');}" href="#">Удалить строку</a>
                            </td>
                            <td>
                                <input data-bind="value : Value">
                            </td>

<!-- ko foreach: Entryes -->
                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>

                                <td>
                                    <input data-bind="value : $data">
                                </td>
<!-- /ko -->
                        </tr>
<!-- /ko -->
                </tbody>

            </table>
        </div>
        <br>
<!-- /ko -->
    <button data-bind="click : function() {executeOnServer(viewModel, '/ContextDictionaryController/Save');},enable : Dictionaries().length&gt;0">Сохранить</button>
</fieldset>
drvic10k commented 11 years ago

the bug is that the inputs don't have type="text" ? because I have the same problem

Bezarius commented 10 years ago

General problem in incorrect generation.

drvic10k commented 10 years ago

but the problem was solved here #34, do you still have the problem?