J'ai une méthode de contrôleur dans ASP.NET MVC qui ressemble à ceci:comment puis-je mettre à jour un querystring en asp.net mvc
public class HomeController : Controller
{
SessionHelper mysession = new SessionHelper();
[HttpGet]
[ActionName("Index")]
public ActionResult Index_Get(SessionHelper arg)
{
pageload();
if (Request["hid"] != null)
{
mysession.HotelID = Request["hid"];
}
else
{
mysession.HotelID = mysession.HotelID;
//if HotelID==null i want to get the value to querystring i do it like this but did not worked
}
if (Request["Culture"] != null)
{
mysession.Culture = Request["Culture"];
}
else
{
mysession.Culture = mysession.Culture;
//if Culture ==null i want to get the value to querystring i do it like this but did not worked
}
return View(mysession);
}
}
Le routage pour cette méthode ressemble à ceci:
routes.MapRoute(
"OpenCase",
"IBE/hid={hid}",
new { controller = "Home", action = "Index" }
);
Je classe session assistant cette classe i utilisé pour définir des valeurs par défaut et stocker les valeurs modifiées pour les paramètres de chaîne de requête si leur est pas valeur passée:
public class SessionHelper
{
public SessionHelper()
{
// ------ Set default values here
Rate = "";
HotelID = string.Empty;
CSS_FileName = "default.css";
Culture = "En";
Checkin = DateTime.Today.Date;
Checkout = DateTime.Today.Date.AddDays(1);
//Maximum numbers
MaximumNumberOfRooms = 4;
MaximumNumberOfAdultsPerRoom = 4;
MaximumNumberOfChildrenPerRoom = 3;
MaximumDaysAheadBookable = 450;
MaximumDaysBetweenCheckinCheckout = 31;
}
#region String properties
public string Rate
{
get { return HttpContext.Current.Session["Rate"] as string; }
set { HttpContext.Current.Session["Rate"] = value; }
}
public string CSS_FileName
{
get { return HttpContext.Current.Session["CSS_FileName"] as string; }
set { HttpContext.Current.Session["CSS_FileName"] = value; }
}
public string Culture
{
get { return HttpContext.Current.Session["Culture"] as string; }
set { HttpContext.Current.Session["Culture"] = value; }
}
#endregion
#region Integer properties
public string HotelID
{
get { return (string)(HttpContext.Current.Session["HotelID"]); }
set { HttpContext.Current.Session["HotelID"] = value; }
}
//Maximum numbers defaulot value
public int MaximumNumberOfRooms
{
get { return (int)(HttpContext.Current.Session["MaximumNumberOfRooms"]); }
set { HttpContext.Current.Session["MaximumNumberOfRooms"] = value; }
}
public int MaximumNumberOfAdultsPerRoom
{
get { return (int)(HttpContext.Current.Session["MaximumNumberOfAdultsPerRoom"]); }
set { HttpContext.Current.Session["MaximumNumberOfAdultsPerRoom"] = value; }
}
public int MaximumNumberOfChildrenPerRoom
{
get { return (int)(HttpContext.Current.Session["MaximumNumberOfChildrenPerRoom"]); }
set { HttpContext.Current.Session["MaximumNumberOfChildrenPerRoom"] = value; }
}
public int MaximumDaysAheadBookable
{
get { return (int)(HttpContext.Current.Session["MaximumDaysAheadBookable"]); }
set { HttpContext.Current.Session["MaximumDaysAheadBookable"] = value; }
}
public int MaximumDaysBetweenCheckinCheckout
{
get { return (int)(HttpContext.Current.Session["MaximumDaysBetweenCheckinCheckout"]); }
set { HttpContext.Current.Session["MaximumDaysBetweenCheckinCheckout"] = value; }
}
#endregion
#region Date properties
public DateTime Checkin
{
get { return (DateTime)(HttpContext.Current.Session["Checkin"]); }
set { HttpContext.Current.Session["Checkin"] = value; }
}
public DateTime Checkout
{
get { return (DateTime)(HttpContext.Current.Session["Checkout"]); }
set { HttpContext.Current.Session["Checkout"] = value; }
}
#endregion
L'utilisateur utilisera l'URL suivante:
http://localhost:51518/IBE/hid=100?Culture=Fr&Rate=ibe
Cependant, je voudrais changer les valeurs des paramètres de chaîne de requête si l'utilisateur n'a pas passé des valeurs pour le paramètre de chaîne de requête de la requête string Ens la les valeurs par défaut vient par exemple si l'utilisateur obtenir l'URL comme ceci: http://localhost:51518/IBE/hid=?Culture=&Rate=
sans valeurs que je veux obtenir les valeurs par défaut de mysession
classe
Vous pouvez écrire un middleware qui gère ces paramètres et le placer dans le ViewBag, afin que le contrôleur ne doive pas s'en soucier – Victor