0

部分ビューで剣道オートコンプリートを使用したいのですが、1 つのビューにその多くがあるため、パラメーターを動的に取得する必要があります。データ機能で要素 ID を取得する方法はありますか? 私は $(this).val() ですが、うまくいきません:( 、どの用量を使用すればよいですか?助けてください:( tihs は私のコードです:

@(Html.Kendo().AutoComplete()
.Name("Employee" + (string)Session["fileid"]) 
.Placeholder("Employee Name ...")
.Filter(FilterType.StartsWith)
.DataSource(source =>
{
    source.Read(read =>
                 {
        read.Action(
                        "GetEmployeeName",
                         "Proceeds")
                         .Data(
                      "function onAdditionalData() {return { text:$(this).val() };}");
          })
                     .ServerFiltering(true);
})
.Events(e => { e.Open("onOpen");})
.Animation(true)
)
4

3 に答える 3

0

これが私のために働いた方法です...

function onAdditionalData(e) {
    return { text: e.filter.filters[0].value };
}

さらに、コントローラーのアクション名を変更して、フィールドの ID を追加することもできます...

read.Action("MyAction#" + id, "MyController").Data("onAdditionalData");

その方法で属性にアクセスし、データパラメーターを設定してイベントで使用できるようにします。

function onAdditionalData(e) {
    var filterValue = e.filter.filters[0].value;
    var field = $(this.url.substring(this.url.indexOf('#')));
    return {
        text: filterValue,
        extradata1: field.data("extradata1"),
        extradata2: field.data("extradata2")
    };
}

URL のハッシュ タグは、サーバーへの GET 中にブラウザーによって削除されます。

このメソッドを使用して、リスト ソースの列挙型やその他のさまざまなパラメーターを渡し、非常に柔軟な AJAX インターフェイスを作成します。

于 2013-10-21T18:47:55.890 に答える
0

お返事ありがとうございます。私のビューには多くの AutoComplete コントロールがあり、それらすべてに対してread.Action("GetCountries", "Proceeds").Data("onAdditionalData")関数を 1つだけ書きたいので、取得する必要があります。この関数で選択された各 AutoComplete コントロールの ID (ユーザーが入力した値を取得し、指定されたアクションに渡すため)。コードは次のとおりです。

 @(Html.Kendo().AutoComplete()
 .Name("Employee" + (string)Session["fileid"]) 
 .Placeholder("Employee Name ...")
 .Filter(FilterType.StartsWith)
 .DataSource(source =>
  {
    source.Read(read =>
                 {
         read.Action(
                    "GetEmployeeName",
                     "Proceeds")
                     .Data("onAdditionalData");
      })
         .ServerFiltering(true);
  })
  .Animation(true)
 )

function onAdditionalData() {
var id = this.element.attr('id');//This line is my problem, because it does not
//work and I can not get the ID of the currently focused AutoComplete control.
id = '#' + id;
return {    text: $(id).val() };
}

これはアクション部分です:

    [System.Web.Mvc.HttpGet]
    public System.Web.Mvc.JsonResult GetEmployeeName(string text)
    {
    return Json(/*SOMEVALUES*/, System.Web.Mvc.JsonRequestBehavior.AllowGet);
    }

.Data("onAdditionalData") を使用しない場合は、null をパラメーターとしてアクションに送信します

于 2013-01-22T07:48:06.803 に答える