Asp.net-Mvc
Kendo UI - 在讀取數據源時指定參數名稱
使用Kendo UI,我正在使用一個自動完成框來嘗試從我的伺服器檢索數據。它正在使用具有以下簽名的ASP.NET MVC控制器。
public ActionResult aspect(string term){ // ... }這意味著請求需要在 url 中有正確的參數。現在我遇到的問題是我找不到在dataSource機制中指定它的方法。我已經閱讀了數十次有關parameterMap的文件,但對我來說絕對沒有任何意義。
由於所討論的頁面實際上在任何時候都有 10-15 個自動完成文本框,每個都使用動態標識動態創建,這一事實使情況變得更加複雜。
到目前為止我使用的程式碼如下;
$(".autocomplete").kendoAutoComplete({ dataTextField: "Name", dataSource: { type: "json", transport: { read: { url: "/search/aspect" } } } });那麼我能做些什麼來告訴它如何命名它傳遞的參數嗎?
為了更清楚我想要做什麼,如果我在jQuery中這樣做,我會使用…
$.ajax({ url: '/search/aspects', data: { term: (insert the data here) } });但是由於所有這些工作的方式,沒有設置“選擇器”來獲取自動完成輸入,所以我無法從輸入表單元素中檢索它的值。
首先,通過設置此選項啟用伺服器端過濾:
dataSource: { serverFiltering: true,然後將該值作為參數之一傳遞給
transport.parameterMap函式。如果您要像這樣記錄傳遞給 parameterMap 函式的對象:
$(".autocomplete").kendoAutoComplete({ dataTextField: "Name", dataSource: { serverFiltering: true, type: "json", transport: { read: { url: "/search/aspect" }, parameterMap: function (data, action) { console.log(data); } } } });然後你會得到一個看起來像這樣的對象:
{ "filter":{ "logic":"and", "filters":[ { "value":"something", "operator":"contains", "field":"Name", "ignoreCase":true } ] } }因此,您可以使用它來獲取輸入到“自動完成”框中的值,方法是:
$(".autocomplete").kendoAutoComplete({ dataTextField: "Name", dataSource: { serverFiltering: true, type: "json", transport: { read: { url: "/search/aspect" }, parameterMap: function (data, action) { if(action === "read") { return { term: data.filter.filters[0].value }; } else { return data; } } } } });