2

次のことを達成する方法について質問があります。

アクティビティを含むドロップダウンリストがあり、アクティビティの onchange イベントで、ajax を使用してモデルに設定されている ID でリストがフェッチされるようにしたい

私のコードの例は次のとおりです

IDを設定するAjaxメソッド

 function GetSelectedValue(DropDownID, HiddenFieldID) {

    $('#' + HiddenFieldID).val($('#' + DropDownID + ' option:selected').val());

    $('#' + DropDownID).change(function () {
        $('#' + HiddenFieldID).val($('#' + DropDownID + ' option:selected').val());

        $.ajax({
            url: 'Afmeldingen',
            type: "POST",
            data: JSON.stringify({ 'ActiviteitenID': $('#' + DropDownID + ' option:selected').val() }),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
                jQuery.globalEval(data.Callback);
            },
            error: function (error) {
                //alert(error);
            }
        });
    });
}
$(document).bind('pageinit', function () {
    GetSelectedValue('details', 'act_id');
});

フォーム要素

@using (Html.BeginForm())
{
    <div data-role="collapsible" data-inline="true" data-content-theme="b" data-collapsed="false">
        <h3>@DateTime.Today.ToShortDateString()</h3>
        <div data-role="collapsible-set" data-inline="true" data-content-theme="b" data-collapsed="true">
            <select id="details">
                @foreach (var item in Models.Taken.ActivityList)
                {
                    <option value="@item.ID">@item.Comments</option>
                }
            </select>
            @Html.Hidden("act_id")
            @foreach (var item in Talent.Subscription.Fetch(null, Models.Taken.ActID ?? 1L, null, null))
            {
                <div data-role="collapsible" data-content-theme="b" data-collapsed="true">
                    <h3>
                        @Html.Label("", item.Participant.CompleteName)
                    </h3>
                    @Html.CheckBoxFor(m => m.DeelnemerActive.HasValue, htmlAttributes: new { data_role = "CheckBox" })
                    @foreach (var af in Talent.Afmelding.Fetch(null, Models.Tasks.ActID ?? 1L, null, null))
                    {
                        @Html.Label("", "Comments")
                        @Html.TextBox("Reason", af.Reason);
                    }
                </div>
            }
        </div>
    </div>
}

これを達成するのを手伝ってくれることを願っています。または、これを行う方法を知っていることを願っています

4

1 に答える 1

4

これはおそらく、私が見つけることができる最良の例です。

http://blog.krisvandermast.com/CommentView,guid,b1a264ac-c48f-463e-9f55-db24e2a9b635.aspx

彼は、ボタンのオンクリックで部分ビューから動的にデータをロードします。ここで onchange を使用できます。

-

次の例を見て、カスケード ドロップダウンがどのように機能するかを確認してください。

http://www.c-sharpcorner.com/UploadFile/abhikumarvatsa/cascading-dropdownlist-in-Asp-Net-mvc/

-

ここで説明されているように、ノックアウト js の使用を検討することもできます。

http://www.dotnetexpertguide.com/2012/06/cascading-dropdown-knockoutjs-aspnet.html

于 2013-05-21T13:05:24.743 に答える