Передать массив C # в функцию Jquery в параметре - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь передать массив C # в функцию JQuery в качестве параметра.

Мой код C # для вызова функции:

//Create an Array from filtered DataTable Column
    var GatepassIDs = defaultView.ToTable().AsEnumerable().Select(r => r.Field<string>("GatePassID")).ToArray<string>(); 


  //Pass Array to JQuery function                 
                Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction", "<script type='text/javascript' >FillGatePassIDSmartBox("+GatepassIDs+");</script>", false);

Jquery Script:

<script type="text/javascript" >
function FillGatePassIDSmartBox(GatepassIDs) {        

        $('#<%=txt_gatepassID.ClientID%>').autocomplete({
            source: GatepassIDs
    });
}
</script>

Проблема в том, что он передает System.String [] из вызова C # вместо передачи Array значений.

Пожалуйста, помогите

Ответы [ 3 ]

2 голосов
/ 20 июня 2019

Вместо того, чтобы передавать ваш массив в качестве параметра непосредственно из C #, отправьте вам массив как переменную в ваш JavaScript.Затем вы можете отправить его в качестве параметра в вашу функцию:

  var GatepassIDs = defaultView.ToTable().AsEnumerable().Select(r => r.Field<string>("GatePassID")).ToArray<string>();

  StringBuilder sb = new StringBuilder();
  sb.Append("<script>");
  sb.Append("var yourGatePassIDArray= new Array;");
  foreach(string str in GatepassIDs)
  {
    sb.Append("yourGatePassIDArray.push('" + str + "');");
  }
 sb.Append("FillGatePassIDSmartBox(yourGatePassIDArray)");
  sb.Append("</script>");

  Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction", sb.ToString());

И затем использовать это в своем JavaScript как:

function FillGatePassIDSmartBox(yourGatePassIDArray) {        

        $('#<%=txt_gatepassID.ClientID%>').autocomplete({
            source: yourGatePassIDArray
    });

Вы должны будете объявить свой массив в глобальном контексте.

0 голосов
/ 20 июня 2019

Я бы рекомендовал это.

var jarr = JsonConvert.SerializeObject (GatepassIDs);

Page.ClientScript.RegisterStartupScript (this.GetType (), "CallMyFunction", "FillGatePassIDSmartBox (")+ jarr + ");", false);

0 голосов
/ 20 июня 2019

Я бы порекомендовал использовать пакет Newtonsoft.Json NuGet, поскольку он делает обработку JSON тривиальной.Вы можете сделать следующее:

var jsonArray = JsonConvert.SerializeObject(GatepassIDs);
Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction", "<script type='text/javascript' >FillGatePassIDSmartBox("+ jsonArray +");</script>", false);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...