所以,我正在使用 ASP.NET MVC 开发一个新项目。老实说,我之前对它(或任何 Web 开发)没有太多经验,所以这可能是一个简单的问题。
我有一个局部视图,它是一个在各种 Web 视图之间共享的搜索框。该视图有一个下拉列表和一个文本框。SearchFilterModel
一旦用户发布表单(使用搜索按钮),我需要该值作为对象到达搜索控制器的索引操作。
现在,表单正在调用 Search 控制器上的 index 操作。这是有效的(见附件代码)。但问题是,索引方法的 id 参数(必须是 a SearchFilterModel
)没有到达(它为空)。
我不知道如何将对象从表单传递到控制器。¿ 我做错了什么?
问题是如果我替换new { id = search }
为new { id = "something" }
(更改发送参数的类型,然后一个字符串到达(它有效)或者如果我写然后一个 int 到达。我想有一些与不是本机类型new { id = 1 }
的东西相关的东西,而是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();
}
搜索过滤器模型
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; }
}