在我的表單中,我試過設置id = Model.SearchTerm,但不起作用,因爲當我轉到表單頁時它說「對象引用未設置爲對象的實例「。這是有道理的,因爲用戶還沒有輸入搜索詞。MVC 5 Html.BeginForm在URL中包含值
例如,在我們的設施頁面上,我們有幾種方法來查找設施。在這種情況下,當您通過郵政編碼進行搜索時,您會得到URL爲http://localhost:50264/Facilities/SearchByZipCode。
這裏的形式:
@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>
}
當您張貼,你會得到以下的ActionResult:
[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);
}
所以,問題是,我怎樣才能使它所以當有人爲設施搜索,它使得網址http://localhost:50264/Facilities/SearchByZipCode?Distance=50&ZipCode=32608
我想這樣做主要是因爲我想讓我們的SiteMap捕獲SearchByZipCode與preserveRouteParameters是等於「距離,郵編」。
謝謝你的一切幫助。如果您需要更多信息,請告訴我。
謝謝你發佈的答案,現在偉大的作品! – ajtatum