0

テーブルに複数の隠しInputフィールドがあります。各行には 3 つのフォームがあり、各フォームには同じname. しかし、ボタンの 1 つをクリックすると、最後にレンダリングされた非表示フィールドのユーザー名だけが使用されます。なぜそうなのか、どうすれば変更できますか?

ここにかみそりのマークアップがあります

<table class="table table-condensed">
    <thead>
        <tr>
            <th>#</th>
            <th>Benutzername</th>
            <th>Aktiviert</th>
            <th>S0Pin Ansicht</th>
            <th>Einstellungen</th>
            <th>Aktionen</th>
        </tr>
    </thead>
    <tbody>
        @if (Model != null && Model.Count > 0) {
            foreach (var item in Model) {
            <tr>
                <td>@item.ID</td>
                <td>@item.Username</td>
                @if (item.Activated) {
                    <td><i id="active_@item.ID" class="icon-ok" /></td>
                } else {
                    <td><i id="active_@item.ID" class="icon-remove" /></td>
                }
                @if (item.S0PinAllowed) {
                    <td><i id="support_@item.ID" class="icon-ok" /></td>
                } else {
                    <td><i id="support_@item.ID" class="icon-remove" /></td>
                }
                @if (item.SettingsAllowed) {
                    <td><i id="settings_@item.ID" class="icon-ok" /></td>
                } else {
                    <td><i id="settings_@item.ID" class="icon-remove" /></td>
                }
                <td>
                    @if (item.Username == User.Identity.Name) {
                        <span>Keine Aktionen verfügbar</span>
                    } else {
                        using (Ajax.BeginForm(item.Activated ? "DeactivateUser" : "ActivateUser", "Settings", new AjaxOptions() {
                            HttpMethod = "POST",
                            UpdateTargetId = "usertable"
                        }, new {
                            id = "formlogin_" + item.ID,
                        })) {
                            var user = item as Token.Creator.Site.Models.User;
                        @Html.Hidden("first", Model.First)
                        @Html.Hidden("count", Model.Fetch)
                        @Html.Hidden("username", user.Username, new { id = "username_login_" + user.ID })
                            if (item.Activated) {
                        <input class="btn btn-danger btn-small pull-left" type="submit" id="sublogin_@item.ID" value="Deaktivieren" />
                            } else { 
                        <input class="btn btn-success btn-small pull-left" type="submit" id="sublogin_@item.ID" value="Aktivieren" />
                            }
                        }
                        using (Ajax.BeginForm(item.S0PinAllowed ? "DeactivateSupportUser" : "ActivateSupportUser", "Settings", new AjaxOptions() {
                            HttpMethod = "POST",
                            UpdateTargetId = "usertable"
                        }, new {
                            id = "formsupport_" + item.ID
                        })) {
                            var user = item as Token.Creator.Site.Models.User;
                        @Html.Hidden("first", Model.First)
                        @Html.Hidden("count", Model.Fetch)
                        @Html.Hidden("username", user.Username, new { id = "username_support_" + user.ID })
                            if (item.S0PinAllowed) {
                        <input class="btn btn-danger btn-small pull-left" type="submit" id="subsupport_@item.ID" value="Support verweigern" />
                            } else { 
                        <input class="btn btn-success btn-small pull-left" type="submit" id="subsupport_@item.ID" value="Support erlauben" />
                            }
                        }
                        using (Ajax.BeginForm(item.SettingsAllowed ? "DeactivateSettingsUser" : "ActivateSettingsUser", "Settings", new AjaxOptions() {
                            HttpMethod = "POST",
                            UpdateTargetId = "usertable"
                        }, new {
                            id = "formsettings_" + item.ID
                        })) {
                            var user = item as Token.Creator.Site.Models.User;
                        @Html.Hidden("first", Model.First)
                        @Html.Hidden("count", Model.Fetch)
                        @Html.Hidden("username", user.Username, new { id = "username_settings_" + user.ID })
                            if (item.SettingsAllowed) {
                        <input class="btn btn-danger btn-small pull-left" type="submit" id="subsettings_@item.ID" value="Einstellungen verweigern" />
                            } else {
                        <input class="btn btn-success btn-small pull-left" type="submit" id="subsettings_@item.ID" value="Einstellungen erlauben" />
                            }
                        }
                    }
                </td>
            </tr>
            }
        } else {
            <tr class="alert alert-info">
                <td colspan="6">Leider sind keine Daten verfügbar :(</td>
            </tr>
        }
    </tbody>
</table>

これがレンダリングされたマークアップです

<table class="table table-condensed">
    <thead>
        <tr>
            <th>#</th>
            <th>Benutzername</th>
            <th>Aktiviert</th>
            <th>S0Pin Ansicht</th>
            <th>Einstellungen</th>
            <th>Aktionen</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>1</td>
            <td>KIRK-NOTEBOOK\Kirk</td>
            <td><i class="icon-ok" id="active_1"></i></td>
            <td><i class="icon-ok" id="support_1"></i></td>
            <td><i class="icon-ok" id="settings_1"></i></td>
            <td>
                <span>Keine Aktionen verfügbar</span>
            </td>
        </tr>
        <tr>
            <td>19</td>
            <td>KIRK-NOTEBOOK\Heather</td>
            <td><i class="icon-ok" id="active_19"></i></td>
            <td><i class="icon-ok" id="support_19"></i></td>
            <td><i class="icon-ok" id="settings_19"></i></td>
            <td>
                <form id="formlogin_19" action="/Site/Settings/DeactivateUser?Length=8" method="post" novalidate="novalidate" data-ajax-update="#usertable" data-ajax-mode="replace" data-ajax-method="POST" data-ajax="true">
                    <input name="first" id="first" type="hidden" value="0" data-val-required='Das Feld "First" ist erforderlich.' data-val-number='Das Feld "First" muss eine Zahl sein.' data-val="true"><input name="count" id="count" type="hidden" value="50" data-val-required='Das Feld "Count" ist erforderlich.' data-val-number='Das Feld "Count" muss eine Zahl sein.' data-val="true"><input name="username" id="username_login_19" type="hidden" value="KIRK-NOTEBOOK\Heather">
                    <input class="btn btn-danger btn-small pull-left" id="sublogin_19" type="submit" value="Deaktivieren">
                </form>
                <form id="formsupport_19" action="/Site/Settings/DeactivateSupportUser?Length=8" method="post" novalidate="novalidate" data-ajax-update="#usertable" data-ajax-mode="replace" data-ajax-method="POST" data-ajax="true">
                    <input name="first" id="Hidden1" type="hidden" value="0" data-val-required='Das Feld "First" ist erforderlich.' data-val-number='Das Feld "First" muss eine Zahl sein.' data-val="true"><input name="count" id="Hidden2" type="hidden" value="50" data-val-required='Das Feld "Count" ist erforderlich.' data-val-number='Das Feld "Count" muss eine Zahl sein.' data-val="true"><input name="username" id="username_support_19" type="hidden" value="KIRK-NOTEBOOK\Heather">
                    <input class="btn btn-danger btn-small pull-left" id="subsupport_19" type="submit" value="Support verweigern">
                </form>
                <form id="formsettings_19" action="/Site/Settings/DeactivateSettingsUser?Length=8" method="post" novalidate="novalidate" data-ajax-update="#usertable" data-ajax-mode="replace" data-ajax-method="POST" data-ajax="true">
                    <input name="first" id="Hidden3" type="hidden" value="0" data-val-required='Das Feld "First" ist erforderlich.' data-val-number='Das Feld "First" muss eine Zahl sein.' data-val="true"><input name="count" id="Hidden4" type="hidden" value="50" data-val-required='Das Feld "Count" ist erforderlich.' data-val-number='Das Feld "Count" muss eine Zahl sein.' data-val="true"><input name="username" id="username_settings_19" type="hidden" value="KIRK-NOTEBOOK\Heather">
                    <input class="btn btn-danger btn-small pull-left" id="subsettings_19" type="submit" value="Einstellungen verweigern">
                </form>
            </td>
        </tr>
        <tr>
            <td>20</td>
            <td>KIRK-NOTEBOOK\Reemt</td>
            <td><i class="icon-ok" id="active_20"></i></td>
            <td><i class="icon-ok" id="support_20"></i></td>
            <td><i class="icon-ok" id="settings_20"></i></td>
            <td>
                <form id="formlogin_20" action="/Site/Settings/DeactivateUser?Length=8" method="post" novalidate="novalidate" data-ajax-update="#usertable" data-ajax-mode="replace" data-ajax-method="POST" data-ajax="true">
                    <input name="first" id="Hidden5" type="hidden" value="0" data-val-required='Das Feld "First" ist erforderlich.' data-val-number='Das Feld "First" muss eine Zahl sein.' data-val="true"><input name="count" id="Hidden6" type="hidden" value="50" data-val-required='Das Feld "Count" ist erforderlich.' data-val-number='Das Feld "Count" muss eine Zahl sein.' data-val="true"><input name="username" id="username_login_20" type="hidden" value="KIRK-NOTEBOOK\Reemt">
                    <input class="btn btn-danger btn-small pull-left" id="sublogin_20" type="submit" value="Deaktivieren">
                </form>
                <form id="formsupport_20" action="/Site/Settings/DeactivateSupportUser?Length=8" method="post" novalidate="novalidate" data-ajax-update="#usertable" data-ajax-mode="replace" data-ajax-method="POST" data-ajax="true">
                    <input name="first" id="Hidden7" type="hidden" value="0" data-val-required='Das Feld "First" ist erforderlich.' data-val-number='Das Feld "First" muss eine Zahl sein.' data-val="true"><input name="count" id="Hidden8" type="hidden" value="50" data-val-required='Das Feld "Count" ist erforderlich.' data-val-number='Das Feld "Count" muss eine Zahl sein.' data-val="true"><input name="username" id="username_support_20" type="hidden" value="KIRK-NOTEBOOK\Reemt">
                    <input class="btn btn-danger btn-small pull-left" id="subsupport_20" type="submit" value="Support verweigern">
                </form>
                <form id="formsettings_20" action="/Site/Settings/DeactivateSettingsUser?Length=8" method="post" novalidate="novalidate" data-ajax-update="#usertable" data-ajax-mode="replace" data-ajax-method="POST" data-ajax="true">
                    <input name="first" id="Hidden9" type="hidden" value="0" data-val-required='Das Feld "First" ist erforderlich.' data-val-number='Das Feld "First" muss eine Zahl sein.' data-val="true"><input name="count" id="Hidden10" type="hidden" value="50" data-val-required='Das Feld "Count" ist erforderlich.' data-val-number='Das Feld "Count" muss eine Zahl sein.' data-val="true"><input name="username" id="username_settings_20" type="hidden" value="KIRK-NOTEBOOK\Reemt">
                    <input class="btn btn-danger btn-small pull-left" id="subsettings_20" type="submit" value="Einstellungen verweigern">
                </form>
            </td>
        </tr>
        <tr>
            <td>21</td>
            <td>Theo</td>
            <td><i class="icon-ok" id="active_21"></i></td>
            <td><i class="icon-ok" id="support_21"></i></td>
            <td><i class="icon-ok" id="settings_21"></i></td>
            <td>
                <form id="formlogin_21" action="/Site/Settings/DeactivateUser?Length=8" method="post" novalidate="novalidate" data-ajax-update="#usertable" data-ajax-mode="replace" data-ajax-method="POST" data-ajax="true">
                    <input name="first" id="Hidden11" type="hidden" value="0" data-val-required='Das Feld "First" ist erforderlich.' data-val-number='Das Feld "First" muss eine Zahl sein.' data-val="true"><input name="count" id="Hidden12" type="hidden" value="50" data-val-required='Das Feld "Count" ist erforderlich.' data-val-number='Das Feld "Count" muss eine Zahl sein.' data-val="true"><input name="username" id="username_login_21" type="hidden" value="Theo">
                    <input class="btn btn-danger btn-small pull-left" id="sublogin_21" type="submit" value="Deaktivieren">
                </form>
                <form id="formsupport_21" action="/Site/Settings/DeactivateSupportUser?Length=8" method="post" novalidate="novalidate" data-ajax-update="#usertable" data-ajax-mode="replace" data-ajax-method="POST" data-ajax="true">
                    <input name="first" id="Hidden13" type="hidden" value="0" data-val-required='Das Feld "First" ist erforderlich.' data-val-number='Das Feld "First" muss eine Zahl sein.' data-val="true"><input name="count" id="Hidden14" type="hidden" value="50" data-val-required='Das Feld "Count" ist erforderlich.' data-val-number='Das Feld "Count" muss eine Zahl sein.' data-val="true"><input name="username" id="username_support_21" type="hidden" value="Theo">
                    <input class="btn btn-danger btn-small pull-left" id="subsupport_21" type="submit" value="Support verweigern">
                </form>
                <form id="formsettings_21" action="/Site/Settings/DeactivateSettingsUser?Length=8" method="post" novalidate="novalidate" data-ajax-update="#usertable" data-ajax-mode="replace" data-ajax-method="POST" data-ajax="true">
                    <input name="first" id="Hidden15" type="hidden" value="0" data-val-required='Das Feld "First" ist erforderlich.' data-val-number='Das Feld "First" muss eine Zahl sein.' data-val="true"><input name="count" id="Hidden16" type="hidden" value="50" data-val-required='Das Feld "Count" ist erforderlich.' data-val-number='Das Feld "Count" muss eine Zahl sein.' data-val="true"><input name="username" id="username_settings_21" type="hidden" value="Theo">
                    <input class="btn btn-danger btn-small pull-left" id="subsettings_21" type="submit" value="Einstellungen verweigern">
                </form>
            </td>
        </tr>
        <tr>
            <td>22</td>
            <td>KIRK-NOTEBOOK\Theo</td>
            <td><i class="icon-ok" id="active_22"></i></td>
            <td><i class="icon-remove" id="support_22"></i></td>
            <td><i class="icon-ok" id="settings_22"></i></td>
            <td>
                <form id="formlogin_22" action="/Site/Settings/DeactivateUser?Length=8" method="post" novalidate="novalidate" data-ajax-update="#usertable" data-ajax-mode="replace" data-ajax-method="POST" data-ajax="true">
                    <input name="first" id="Hidden17" type="hidden" value="0" data-val-required='Das Feld "First" ist erforderlich.' data-val-number='Das Feld "First" muss eine Zahl sein.' data-val="true"><input name="count" id="Hidden18" type="hidden" value="50" data-val-required='Das Feld "Count" ist erforderlich.' data-val-number='Das Feld "Count" muss eine Zahl sein.' data-val="true"><input name="username" id="username_login_22" type="hidden" value="KIRK-NOTEBOOK\Theo">
                    <input class="btn btn-danger btn-small pull-left" id="sublogin_22" type="submit" value="Deaktivieren">
                </form>
                <form id="formsupport_22" action="/Site/Settings/ActivateSupportUser?Length=8" method="post" novalidate="novalidate" data-ajax-update="#usertable" data-ajax-mode="replace" data-ajax-method="POST" data-ajax="true">
                    <input name="first" id="Hidden19" type="hidden" value="0" data-val-required='Das Feld "First" ist erforderlich.' data-val-number='Das Feld "First" muss eine Zahl sein.' data-val="true"><input name="count" id="Hidden20" type="hidden" value="50" data-val-required='Das Feld "Count" ist erforderlich.' data-val-number='Das Feld "Count" muss eine Zahl sein.' data-val="true"><input name="username" id="username_support_22" type="hidden" value="KIRK-NOTEBOOK\Theo">
                    <input class="btn btn-success btn-small pull-left" id="subsupport_22" type="submit" value="Support erlauben">
                </form>
                <form id="formsettings_22" action="/Site/Settings/DeactivateSettingsUser?Length=8" method="post" novalidate="novalidate" data-ajax-update="#usertable" data-ajax-mode="replace" data-ajax-method="POST" data-ajax="true">
                    <input name="first" id="Hidden21" type="hidden" value="0" data-val-required='Das Feld "First" ist erforderlich.' data-val-number='Das Feld "First" muss eine Zahl sein.' data-val="true"><input name="count" id="Hidden22" type="hidden" value="50" data-val-required='Das Feld "Count" ist erforderlich.' data-val-number='Das Feld "Count" muss eine Zahl sein.' data-val="true"><input name="username" id="username_settings_22" type="hidden" value="KIRK-NOTEBOOK\Theo">
                    <input class="btn btn-danger btn-small pull-left" id="subsettings_22" type="submit" value="Einstellungen verweigern">
                </form>
            </td>
        </tr>
    </tbody>
</table>
4

1 に答える 1

1

誰かがこの問題を抱えている場合は、プロパティを使用routeValuesして、隠しフィールドに追加するプロパティをプロパティとして追加してrouteValuesください。

<table class="table table-condensed">
    <thead>
        <tr>
            <th>#</th>
            <th>Benutzername</th>
            <th>Aktiviert</th>
            <th>S0Pin Ansicht</th>
            <th>Einstellungen</th>
            <th>Aktionen</th>
        </tr>
    </thead>
    <tbody>
        @if (Model != null && Model.Count > 0) {
            foreach (var item in Model) {
            <tr>
                <td>@item.ID</td>
                <td>@item.Username</td>
                @if (item.Activated) {
                    <td><i id="active_@item.ID" class="icon-ok" /></td>
                } else {
                    <td><i id="active_@item.ID" class="icon-remove" /></td>
                }
                @if (item.S0PinAllowed) {
                    <td><i id="support_@item.ID" class="icon-ok" /></td>
                } else {
                    <td><i id="support_@item.ID" class="icon-remove" /></td>
                }
                @if (item.SettingsAllowed) {
                    <td><i id="settings_@item.ID" class="icon-ok" /></td>
                } else {
                    <td><i id="settings_@item.ID" class="icon-remove" /></td>
                }
                <td>
                    @if (item.Username == User.Identity.Name) {
                        <span>Keine Aktionen verfügbar</span>
                    } else {
                        using (Ajax.BeginForm(item.Activated ? "DeactivateUser" : "ActivateUser", "Settings", new { username = item.Username }, new AjaxOptions() {
                            HttpMethod = "POST",
                            UpdateTargetId = "usertable"
                        }, new {
                            id = "formlogin_" + item.ID,
                        })) {
                            var user = item as Token.Creator.Site.Models.User;
                        @Html.Hidden("first", Model.First)
                        @Html.Hidden("count", Model.Fetch)
                            if (item.Activated) {
                        <input class="btn btn-danger btn-small pull-left" type="submit" id="sublogin_@item.ID" value="Deaktivieren" />
                            } else { 
                        <input class="btn btn-success btn-small pull-left" type="submit" id="sublogin_@item.ID" value="Aktivieren" />
                            }
                        }
                        using (Ajax.BeginForm(item.S0PinAllowed ? "DeactivateSupportUser" : "ActivateSupportUser", "Settings", new { username = item.Username }, new AjaxOptions() {
                            HttpMethod = "POST",
                            UpdateTargetId = "usertable"
                        }, new {
                            id = "formsupport_" + item.ID
                        })) {
                            var user = item as Token.Creator.Site.Models.User;
                        @Html.Hidden("first", Model.First)
                        @Html.Hidden("count", Model.Fetch)
                            if (item.S0PinAllowed) {
                        <input class="btn btn-danger btn-small pull-left" type="submit" id="subsupport_@item.ID" value="Support verweigern" />
                            } else { 
                        <input class="btn btn-success btn-small pull-left" type="submit" id="subsupport_@item.ID" value="Support erlauben" />
                            }
                        }
                        using (Ajax.BeginForm(item.SettingsAllowed ? "DeactivateSettingsUser" : "ActivateSettingsUser", "Settings", new { username = item.Username }, new AjaxOptions() {
                            HttpMethod = "POST",
                            UpdateTargetId = "usertable"
                        }, new {
                            id = "formsettings_" + item.ID
                        })) {
                            var user = item as Token.Creator.Site.Models.User;
                        @Html.Hidden("first", Model.First)
                        @Html.Hidden("count", Model.Fetch)
                            if (item.SettingsAllowed) {
                        <input class="btn btn-danger btn-small pull-left" type="submit" id="subsettings_@item.ID" value="Einstellungen verweigern" />
                            } else {
                        <input class="btn btn-success btn-small pull-left" type="submit" id="subsettings_@item.ID" value="Einstellungen erlauben" />
                            }
                        }
                    }
                </td>
            </tr>
            }
        } else {
            <tr class="alert alert-info">
                <td colspan="6">Leider sind keine Daten verfügbar :(</td>
            </tr>
        }
    </tbody>
</table>

これはうまくいきました。

于 2013-08-17T23:04:03.763 に答える