그래서 ASP.NET MVC를 사용하여 새 프로젝트를 만들고 있습니다. 솔직히 나는 그것의 간단한 질문이 있기 전에 그것 (또는 어떤 웹 개발)로 거의 경험이 없다.양식을 통해 부분 뷰에서 컨트롤러 동작으로 복잡한 유형 전달
부분보기는 다양한 웹보기간에 공유되는 검색 창입니다. 보기에는 드롭 다운 목록과 텍스트 상자가 있습니다. 사용자가 검색 버튼을 사용하여 양식을 게시하면 값이 SearchFilterModel
개체로 검색 컨트롤러의 색인 작업에 도착해야합니다.
이제 양식이 검색 컨트롤러에서 색인 작업을 호출하고 있습니다. 작동 중입니다 (첨부 된 코드 참조). 하지만 문제는 인덱스 메서드의 id 매개 변수 (SearchFilterModel
이어야 함)가 도착하지 않는다는 것입니다 (null 임).
폼에서 컨트롤러로 개체를 전달하는 방법을 모르겠습니다. ¿ 내가 뭘 잘못하고있어? 내가 보낸 매개 변수의 유형을 변경 (new { id = "something" }
와 new { id = search }
를 교체 할 경우
건이며, 다음 문자열은 도착 (작동) 또는 내가 new { id = 1 }
를 작성하는 경우 다음 INT 내가 일 SearchFilterModel
을 그와 관련된 뭔가가 같아요. 도착 기본 타입이지만 복잡한 일이 아니다.
어떤 생각?
@using Hermes.Models.Helpers
@{
var search = CacheHelper.Instance.SearchFilter;
using (Html.BeginForm("Index", "Search", new { id = search }, FormMethod.Post))
{
@Html.ValidationSummary(true, "No se creó la cuenta. Corrija los errores e inténtelo de nuevo.")
<div>
<fieldset>
<legend>Búsqueda por tipo de producto</legend>
<div class="editor-label">
@Html.LabelFor(s => search.SearchFilter)
@Html.DropDownListFor(s => search.SelectedSearchFilter, new SelectList(search.SearchFilter))
@Html.LabelFor(s => search.SearchQuery)
@Html.TextBoxFor(s => search.SearchQuery)
@Html.ValidationMessageFor(s => search.SearchQuery)
<input type="submit" value="Buscar" />
</div>
</fieldset>
</div>
}
}
검색 컨트롤러의 색인 작업
[HttpPost]
public ActionResult Index(SearchFilterModel id)
{
var x = CacheHelper.Instance.SearchFilter;
ViewBag.Filter = id.SelectedSearchFilter;
ViewBag.msg = String.Format("Se están buscando {0}, con el filtro {1}", id.SelectedSearchFilter, id.SearchQuery);
ViewBag.ResultsCount = 0;
return View();
}
SearchFilterModel
public class SearchFilterModel
{
[Required]
[DataType(DataType.Text)]
[Display(Name = "¿Qué características?")]
public string SearchQuery { get; set; }
[Required]
[DataType(DataType.Text)]
[Display(Name = "¿Qué buscar?")]
public List<String> SearchFilter { get; set; }
[Required]
[DataType(DataType.Text)]
[Display(Name = "¿Qué buscar?")]
public string SelectedSearchFilter { get; set; }
}
부분보기에서 색인 contrller로 SearchFilterModel 객체를 전달하려는 것 같습니다. –
@COLDTOLD 그게 제목이 말하는 것입니다 :) ¿ 어떤 생각? –
SearchFilterModel 클래스 – Baz1nga