표 목록을 표시하는 목록 페이지 (색인)가 있습니다. 페이지는 상단에 작은 양식과 하단에 격자 (목록)로 구성됩니다. 이 양식은 목록에 표시된 항목을 필터링하는 방법으로 사용됩니다.페이지가 양식 제출 결과 또는 다른 방법으로 표시되는지 확인하는 방법
두 개의 버튼 중 하나를 클릭하여 양식을 제출하거나 다른 페이지에서 링크를 클릭하거나 브라우저의 주소 표시 줄에 URL을 직접 입력하여 페이지가 표시되는지 확인해야합니다.
보기 :
이@model MyNameSpace.ViewModels.FooFilterViewModel
@{
ViewBag.Title = "Foo Listing";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>@ViewBag.Title</h2>
@using (Html.BeginForm("Index", "Home", FormMethod.Get))
{
@Html.ValidationSummary(true)
<!-- Field controls used for filtering go here -->
<input id="ClearFilter" type="button" value="Clear Filter" />
<input id="ApplyFilter" type="submit" value="Apply Filter" />
}
<!-- Grid displaying the list of foos goes here -->
컨트롤러 액션 :
당신이뿐만 아니라, 양식을 제출 이러한 방법 (모든 GET으로 양식을 보내는 때문에public ActionResult Index(FooFilterViewModel fooFilterViewModel)
{
// Retrieve all records
IQueryable<Foo> foos = _DBContext.Foos;
if (ModelState.IsValid)
{
if (/* check if coming from form submission */){
// Do something
}
else
{
// Do something else
}
// Code to filter records go here
foos = foss.Where(f => f...........)
}
fooFilterViewModel.Foos = foos;
return View(fooFilterViewModel);
}
일반적으로 메서드 서명이 'public ActionResult Index()'인 추가 컨트롤러 동작이 있으며 주소 표시 줄의 클릭 된 링크 또는 URL 항목에서 라우팅 될 때 적중 될 메서드입니다. –
ViewModel에 부울 속성을 false로 설정하기 만하면됩니다.이 속성을 true로 설정하면 양식에 숨겨진 필드를 추가해야합니다. 컨트롤러에서이 속성을 확인합니다. 이것을 관리하지 않으면 나중에 예제를 게시 할 것입니다 –
Thanks @ LucianBumb. 더 나은 해결책을 찾지 못하면 숨겨진 속성을 사용하려고 생각 중입니다. – corix010