ASP.Net MVC - la transmission des données entre les points de Vue
Je suis en train d'essayer de créer une base de XML site web qui a accès à une URL du flux. Le flux XML est interrogé par l'ajout de paramètres d'url à l'URL courante, et je suis donc à l'aide d'un formulaire avec la méthode GET pour ajouter des paramètres à l'URL.
J'ai actuellement une propriété formulaire de recherche qui permet de rechercher des propriétés dans le fil en ajoutant xml des paramètres à l'url comme ceci:
/Vente/?minprice=300000&maxprice=500000
Cela fonctionne parfaitement et les résultats corrects sont indiqués à l'utilisateur. Cependant, si je devais utiliser un formulaire de filtre qui filtrée ces propriétés par le prix le plus élevé par exemple, le flux paramètres devaient être supprimées lorsque le filtre de formulaire est soumis. La nouvelle URL après le filtre serait par exemple:
/Vente/?priceSort=descendant
Comme vous pouvez le voir, le minprice et maxprice champs ont été supprimés, me laissant avec des propriétés.
Actuellement, pour lutter contre cela, j'utilise les sessions pour stocker les Url pour chaque page, puis de les combiner pour faire 1 url. Je comprends que l'utilisation de sessions dans MVC en fonction des applications n'est pas vraiment recommandé.
Donc, je suis vraiment demandais juste si il y a une meilleure façon de stocker l'url plutôt que d'utiliser les sessions?
Toute aide serait grandement appréciée.
Merci d'avance.
QUELQUES EXTRAITS DE CODE DU SITE:
Modèle et ViewModel
public class ResultsViewModel
{
public PropertyResult[] Property { get; set; }
}
public class PropertyResult
{
public int Count { get; set; }
public int Pid { get; set; }
public int RentalPeriod { get; set; }
public string Price { get; set; }
public string Address { get; set; }
public string NameNumber { get; set; }
public string SA1 { get; set; }
public string SA2 { get; set; }
public string Town { get; set; }
public string City { get; set; }
public string County { get; set; }
public string Postcode { get; set; }
public string LocationCode { get; set; }
public string PriceText { get; set; }
public string Primary1 { get; set; }
public string Secondary1 { get; set; }
public string Secondary2 { get; set; }
public string Description { get; set; }
public string Period { get; set; }
public int Bedrooms { get; set; }
public int Receptions { get; set; }
public int Bathrooms { get; set; }
public int Garages { get; set; }
public int Gardens { get; set; }
public bool Featured { get; set; }
public int Views { get; set; }
}
Contrôleur
try
{
var xml = XElement.Load(resultsFeed);
var query = (from props in xml.Descendants("property")
select new PropertyResult
{
//property id
Pid = Convert.ToInt32(props.Attribute("id").Value),
//Rooms Count
Bedrooms = Convert.ToInt32(props.Attribute("bedrooms").Value),
Receptions = Convert.ToInt32(props.Attribute("receptions").Value),
Bathrooms = Convert.ToInt32(props.Attribute("bathrooms").Value),
Gardens = Convert.ToInt32(props.Attribute("gardens").Value),
Garages = Convert.ToInt32(props.Attribute("garages").Value),
//1 = sales prop, 4 = lettings prop
RentalPeriod = Convert.ToInt32(props.Attribute("rentalperiod").Value),
Period = props.Attribute("period").Value,
//address
Address = props.Element("useAddress").Value,
NameNumber = props.Element("num").Value,
SA1 = props.Element("sa1").Value,
SA2 = props.Element("sa2").Value,
Town = props.Element("town").Value,
City = props.Element("city").Value,
County = props.Element("county").Value,
Postcode = props.Element("postcode").Value,
//location code
LocationCode = props.Element("locationcodes").Value,
Featured = Convert.ToBoolean(props.Attribute("featured").Value),
//description
Description = props.Element("summaryDescription").Value,
//price
Price = props.Attribute("price").Value,
PriceText = props.Element("pricetext").Value,
//images
Primary1 = "http://lb.dezrez.com/Imaging/PictureResizer.ASP?Position=1&AgentId=" + eaid + "&BranchId="+ bid + "&width=1000&Category=Primary&PropertyId=",
Secondary1 = "http://www.dezrez.com/estate-agent-software/ImageResizeHandler.do?&photoID=2&AgentID=1239&BranchID=1976&Width=1000&PropertyId=",
Secondary2 = "http://www.dezrez.com/estate-agent-software/ImageResizeHandler.do?&photoID=3&AgentID=1239&BranchID=1976&Width=1000&PropertyId=",
}).ToArray();
Vue
Je suis en train d'accéder à chaque nœud de la sorte:
@Model.Property[i].Gardens
Vous devez vous connecter pour publier un commentaire.
MVC vous devez passer tous les paramètres nécessaires (ou compter, dans certains magasin Session, Cache, Db).
Ainsi, lors du tri, vous venez d'envoyer la colonne et de l'ordre... dans ce cas, vous avez besoin d'afficher également les valeurs de filtre.
La manière correcte de le faire, c'est d'avoir un ViewModel avec tous les filtres et les paramètres de tri... et lorsque vous revenez de filtrage ou de tri, vous pouvez afficher les filtres en cours.
Alors, à part le remplissage du filtre des entrées avec les filtres, vous devez d'artisanat les liens pour prendre en compte tous les paramètres. Par exemple: lors de la commande, vous passez également des filtres actuels... ou si vous changez les filtres vous devriez maintenir l'ordre de tri de la passer sur le post.
Code:
Votre ViewModel:
De Votre Contrôleur:
Envisager l'utilisation d'un Modèle de Domaine (toutes les données de votre entreprise, etc.) et à la Vue des Modèles et des méthodes d'extension qui va transformer votre modèle de domaine d'un point de vue spécifique de modèle, et vice-versa. Le découplage de votre modèle d'affaires de votre point de vue modèle à l'aide de la transformation d'indirection vous donne la possibilité d'utilisation simple, facile d'utilisation afficher les modèles qui sont adaptés à votre vue.