-1

selectJavaScript関数によって処理されるイベントを含むこのKendoUIドロップダウンリストがあります。

LINQクエリを実行するコントローラーからアクション結果を呼び出して、ページにKendoUIグリッドを設定する必要があります。私の問題は、JavaScriptを使用する場合でもこれを処理するために見つけることができる唯一の方法であり、JavaScriptイベント関数からコントローラーからアクション結果を呼び出す方法を理解できませんでした。

これはどのようにDropDownList見えるかです...

@(Html.Kendo().DropDownList()
    .Name("Options")
    .DataTextField("Text")
    .DataValueField("Value")
        .BindTo(new List<SelectListItem>() {
        new SelectListItem() {
            Text = "Policies Not Archived",
            Value = "1"
        },
        new SelectListItem() {
            Text = "View All Policies",
            Value = "2"
        },
        new SelectListItem() {
            Text = "Filter Policies",
            Value = "3"   
        }
    })
    .Events(e => 
    {
        e.Select("select");
    })
)

そして、アクション結果を呼び出す必要がある私のJavaScriptイベントハンドラー

function select(e) {

}

ActionResultそして、このような選択に応じて、

public ActionResult ViewAllPolicies()
{
    //mycode
}
4

3 に答える 3

2

この投稿を参照してください

var url = '@Url.Action("ViewAllPolicies","YourController")';
    $.ajax({ url: url, success: DataRetrieved, type: 'POST', dataType: 'json' });

コントローラー内

public ActionResult ViewAllPolicies()
{
    //Should return json format
}

url –これはリクエストが送信されるURLです。私の場合、contactsというコントローラーがあり、ListPartiesByNameStart()というアクションがあります。このアクションメソッドは、パラメーターnameStart(個人または会社の最初の文字)を取ります。成功–これは取得したデータを処理するJavaScript関数です。そこに無名関数を書くこともできますが、名前の付いた関数を使用することをお勧めします。そうしないと、関数が大きくなるときにコードが乱雑になる可能性があります。type –これはリクエストのタイプです。GETまたはPOSTのいずれかです。JSON形式のGETリクエストはデフォルトでASP.NETMVCによって禁止されているため、POSTを使用することをお勧めします(JSONを返すアクションに対してGETリクエストをオンにする方法については後で説明します)。dataType –これはサーバーから返されると予想されるデータ形式です。値に割り当てない場合、返される結果は文字列として処理されます。jsonに設定すると、jQueryはサーバーから取得したJSONに対応するJavaScriptオブジェクトツリーを構築します。

于 2013-03-01T16:56:35.580 に答える
2

jsonを返す代わりに、PartialViewを返すこともできます。また、.done関数で要素を取得し、部分ビューの結果に置き換えます。PartialViewアクションは基本的にHTMLのフラグメントを返すため、ページ上の任意の場所にそれを詰め込むことができます。

$.ajax({
        url: urlToPartialViewAction,
        type: 'POST',
        dataType: 'JSON',
        data: '123'
    })
    .done(function (result) {
       $('#someDivPlaceholder').replaceWith(result);        
    });

リンクや灰色のdivのようなものを作成し、クリックイベントに接続してこれを呼び出すと、リンクに「領収書の表示」と表示され、クリックすると、領収書とともに部分的なビューを返すアクションが呼び出されます。クリックすると、div/linkが結果に置き換えられます。ソーシャルサイトに表示される「コメントをもっと見る」リンクのようなものです。

部分的なビューを単独で持つことはできないことに注意してください。アクションを介して呼び出す必要があります

public PartialViewResult _GetReceipt(string id)
{
   ReceiptViewModel vm = //query for receipt data
   return PartialView(vm);//render partial view and return html fragment
}
于 2013-03-01T18:08:47.970 に答える
1

関数が実行されたらselect、コントローラーに対してAJAX呼び出しを行う必要があります。関数でjQuery.ajax()(最も一般的なAJAX操作のラッパー)を使用できます。select

function select(e) {
    var url = '@Url.Action("ViewAllPolicies", "PolicyController")';
    var selectedPolicy = $('#Options').val(); // The option selected

    $.ajax({
        url: url,
        type: 'POST',
        dataType: 'JSON',
        data: selectedPolicy
    })
    .done(function (data) {
        // Display the data back from you Controller
    });
}

動作の詳細については、剣道のサイトをご覧くださいDropDownList

于 2013-03-01T17:45:58.973 に答える