Dans mon formulaire, j'ai essayé de définir l'ID = Model.SearchTerm mais le ne fonctionne pas comme quand je vais à la page de formulaire, il dit "Référence d'objet non défini à un instance d'un objet. " ce qui est logique, car l'utilisateur n'a pas encore entré un terme de recherche. Par exemple, sur notre page Installations, nous avons plusieurs façons de trouver une installation. Dans ce cas, lorsque vous effectuez une recherche par code postal, vous obtenez l'URL http://localhost:50264/Facilities/SearchByZipCode.MVC 5 Html.BeginForm inclure des valeurs dans l'URL
est ici la forme:
@if (@ViewBag.ZipCodeSerachError != null)
{
@ViewBag.ZipCodeSerachError
}
@using (Html.BeginForm("SearchByZipCode", "Facilities", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
@Html.LabelFor(m => m.SearchTerm, "5 Digit Zip Code:")
@Html.TextBoxFor(m => m.SearchTerm, new { @class = "form-control", maxlength = 5, id = "zipCodeSearch" })
<br />
@Html.LabelFor(m => m.Distance, "List facilities within:")
@Html.DropDownList("Distance", ViewBag.ZipCodeDistanceList as IEnumerable<SelectListItem>, new { @class = "form-control" })
<br />
<button type="submit" class="btn btn-default">Search</button>
}
Lorsque vous publiez, vous obtenez la ActionResult suivante:
[HttpPost]
public ActionResult SearchByZipCode(FacilitiesSearchViewModel.FacilitiesByZipCode vm)
{
var zipCode = oandpService.GetZipCodes().FirstOrDefault(x => x.ZipCodeId == vm.SearchTerm);
var facilities = new List<Facility>();
if (zipCode == null)
{
ViewBag.ZipCodeSerachError = "An Invalid or Unknown US Zip Code was Entered!";
facilities = new List<Facility>();
}
else
{
var zipCodeId = oandpService.GetZipCode(vm.SearchTerm);
var zipCodes = oandpService.GetZipCodesByDistance(string.Format("{0} {1}", zipCodeId.ZipLongitude, zipCodeId.ZipLatitude), vm.Distance.GetValueOrDefault(0)).Select(x=> new ZipCodeWithDistance() { ZipCode = x.ZipCode, ZipLatitude = x.ZipLatitude, ZipLongitude = x.ZipLongitude, Distance = x.Distance}).ToList();
facilities = oandpService.GetFacilitiesByZipCodes(zipCodes).OrderByDescending(x=>x.IsFeatured).ThenBy(x=>x.Name).ToList();
}
var results = new FacilitiesSearchViewModel.FacilitiesByZipCode
{
SearchTerm = vm.SearchTerm,
Distance = vm.Distance,
Facilities = facilities
};
return View("SearchByZipCode", results);
}
Ainsi, la question est, comment puis-je faire alors quand quelqu'un cherche une installation , il fait l'URL http://localhost:50264/Facilities/SearchByZipCode?Distance=50&ZipCode=32608
Je voudrais que cela soit fait principalement parce que je voudrais faire notre SiteMap pour capturer SearchByZipCode avec les preserveRouteParameters étant égal à "distance, code postal".
Merci pour votre aide. Si vous avez besoin de plus d'informations faites le moi savoir.
Merci d'avoir posté la réponse, fonctionne très bien maintenant! – ajtatum