私のフォームでは、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);
}
を誰かが施設を検索するとき、質問は、どのように私はそれを作ることができているが、 URLを作成します。http://localhost:50264/Facilities/SearchByZipCode?Distance=50&ZipCode=32608
私は、SiteMapでpreservedRouteParametersを持つSearchByZipCodeをキャプチャするようにしたいと思っています。 「距離、郵便番号」に等しい。
ありがとうございました。より多くの情報が必要な場合は、私に知らせてください。
回答を投稿していただきありがとうございます。 – ajtatum