l'obtention de l'erreur: Chaîne de référence non définie à une instance d'une Chaîne de caractères
Quand je filtrer les enregistrements dans une base de données à la date à laquelle ils ont été la place, je veux être en mesure de naviguer à travers les enregistrements filtrés sur plusieurs pages. Maintenant, quand j'essaie d'aller à la page 2 des les enregistrements filtrés, je reçois l'erreur:
Chaîne de référence non définie à une instance d'une Chaîne de caractères.
Nom du paramètre: s `
Aussi, je remarque que les paramètres sont passés dans le changement d'url. Par exemple:
/PurchaseOrder?searchBy=Date&dateSearchBegin=08%2F15%2F2014&dateSearchEnd=09%2F01%2F2014&dateOrderedBegin=&dateOrderedEnd=&search=
devient quand je clique sur la page 2:
/PurchaseOrder?page=2&searchBy=Date
Tel qu'il est écrit dans mon code, je suis en utilisant le Request.QueryString
méthode pour essayer de maintenir l'URL, mais il ne fonctionne pas pour les dates. Est-il une méthode qui est similaire à ce que je peux utiliser pour corriger cette erreur et obtenir mon résultat souhaité?
Voici mon code pour le contrôleur et la vue:
Contrôleur:
else if (searchBy == "Date")
{
if (dateSearchBegin == "" || dateSearchEnd == "")
{
//string message = "Both date fields are required";
}
else
{
var dtFrom = DateTime.Parse(dateSearchBegin);
var dtTo = DateTime.Parse(dateSearchEnd);
return View(db.PurchaseOrders.Where(x => x.Date >= dtFrom && x.Date <= dtTo).OrderBy(i => i.Date).ToPagedList(page ?? 1, 15));
}
}
else if (searchBy == "dateOrder")
{
if (dateOrderedBegin== ""|| dateOrderedEnd == "")
{
//string message = "Both date fields are required";
}
else
{
var dtFrom = DateTime.Parse(dateOrderedBegin);
var dtTo = DateTime.Parse(dateOrderedEnd);
return View(db.PurchaseOrders.Where(x => x.DateOrdered >= dtFrom && x.DateOrdered <= dtTo).OrderBy(i => i.Date).ToPagedList(page ?? 1, 15));
}
}
Vue:
@Html.PagedListPager(
Model, page => Url.Action("Index",
new { page, searchBy = Request.QueryString["searchBy"],
search = Request.QueryString["search"],
dtFrom = Request.QueryString["dtFrom"],
dtTo = Request.QueryString["dtTo"] }),
new PagedListRenderOptions() { DisplayPageCountAndCurrentLocation = true,
DisplayItemSliceAndTotal = true })
Vous devez vous connecter pour publier un commentaire.
Votre chaîne de requête contient
dateSearchBegin and dateSearchEnd
et que vous utilisezdtFrom = Request.QueryString["dtFrom"], dtTo = Request.QueryString["dtTo"]
Changement à même de clés en
Url.Action()
dateSearchBegin = Request.QueryString["dateSearchBegin "], dateSearchEnd = Request.QueryString["dateSearchEnd"]
Url.Action()
va supprimer la valeur null query string args. Une suggestion pour vérifier la chaîne de toujours utiliserstring.IsNullOrEmpty(strVar)
ne pas utiliserstrVar == ""
MessageBox.Show("text")
est-il un équivalent pour qui? Je veux les utilisateurs à l'entrée des dates valides dans les deux zones de texte lorsque vous effectuez une recherche date.<input type=date />
le reste vous avez besoin pour utiliser java-script validations sur le formulaire de soumission de l'événement."" != null
. Vous êtes de passagenull
àDateTime.Parse()
.Changement
dateSearchBegin == ""
àstring.IsNullOrEmpty(dateSearchBegin)
afin de les en empêcher.MessageBox.Show("text")
est-il un équivalent pour qui? Je veux les utilisateurs à l'entrée des dates valides dans les deux zones de texte lorsque vous effectuez une recherche date.