J'ai regardé tellement de commentaires sur ce sujet, et j'ai essayé un certain nombre de méthodes suggérées pour accomplir ceci mais je ne suis toujours pas capable d'accéder au code derrière. Le message d'erreur revient avec la routine de succès. J'utilise un Select2 comme source d'entrée (il n'y a pas de liste, seulement ce que l'opérateur désire entrer) pour que plusieurs entrées soient passées via ajax à mon code derrière. Je crois que le type de données peut ne pas être le même que le code derrière, mais je ne sais pas comment le définir autrement que ce que j'ai, ou a-t-il été déprécié et je ne suis pas au courant. Je suis passé à la programmation d'origine lorsque l'erreur s'est produite. myData est changé en modèle pour faire correspondre le code derrière. Voici ce que je reçois dans le select2 si je mets "test" et "copier".Passer la chaîne d'AJAX au code C# derrière
Après la valeur du modèle est: test, copie
Voici mon code côté client:
...
<select id="SearchSelect" style="width: 150px" name="SearchSelct"
multiple onmouseover="SearchTip('#SrchToolTip','#hdnviewsrch');return
false;"></select>
<textarea id="SrchToolTip" style="color:blue" hidden="hidden">You can
enter any keyword you like.</textarea>
<br />
<br />
<asp:Button ID="SearchFnd" runat="server" Text="Submit"
OnClientClick="SearchSel('#SearchSelect');return false;"
ValidateRequestMode="Disabled" UseSubmitBehavior="False"/>
<script type="text/javascript">
$(document).ready(function() {
//On client side - Here we render the Select 2
$("#SearchSelect").select2(
{
placeholder: "Enter Search Parameters",
tags: true,
tokenSeparators: [','],
allowClear: true,
minimumInputLength: 1,
width: 'resolve',
});
});
$("#SearchSelect").on("change", function (e) {
SearchChange("SearchSelect"); });
function SearchTip(SrchElem) {
$(SrchElem).show();
console.log("Search Tip value is: " + $("#SearchSelect").val());
};
function SearchChange(name, evt) {
console.log("Search Change value is: " + $("#SearchSelect").val()
+ "; Name: " + name);
};
function SearchSel(SchElem) {
var model= { "SrchData": $(SchElem).val() };
$.ajax(
{
type: "POST",
url: '<%= ResolveUrl("~/Default.aspx/SearchFind") %>',
data: JSON.stringify(model.SrchData),
dataType: 'json',
contentType: "application/json; charset=utf-8",
success: function (result) {
alert('success');
console.log("Search data obtained: " + result);
},
error: function (jqXHR, textStatus, errorThrown) {
alert("error: " + errorThrown);
},
failure: function() {
alert('Failure');
}
processResults: function (data, params) {
console.log("Search data obtained: " + data);
return {
results: data.d,
pagination: {
more: data.more
}
};
}
});
}
</script>
Voici le code derrière:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;
using System.Web.Script.Services;
namespace WebApplication2
{
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
public class Schdata
{
public string SrchData { get; set; }
}
[WebMethod()]
// [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static string SearchFind(Schdata model)
{
System.Diagnostics.Debug.WriteLine("Went into the SearchFind
subroutine " + model.SrchData);
return "1";
}
}
}
Voici la message d'erreur:
succès! { "Message": "L'authentification a échoué.", "StackTrace": null, "ExceptionType": "System.InvalidOperationException"}
Le programme dit qu'il est réussi, mais donne une erreur que la valeur est nulle d'être renvoyée (ou envoyé) mais sur le code derrière j'ai un point d'arrêt à la ligne System.Diagnostics.Debug.WriteLine ... et il n'atteint jamais là. Toute aide serait appréciée.
Avez-vous essayé la visite <% = ResolveUrl ("~/Default.aspx/SearchFind ")%> pour s'assurer qu'il est accessible par le client? A défaut, pouvez-vous vous assurer que les données attendues sont affichées? – atoms
Ceci est fonctionnel. Je l'ai utilisé dans beaucoup d'autres pages. Le seul moyen que je connaisse est de l'écrire sur la console avant de l'envoyer via Ajax. De plus, j'ai répondu à la question avant que j'aille à Ajax mais cela n'a rien changé. Merci. – Rick
Voir si ma réponse dans le lien ci-dessous aiderait: https://stackoverflow.com/questions/40957556/passing-data-from-view-to-partial-in-net-core/44831001#44831001 –