したがって、私はASP.NET MVCを使用して新しいプロジェクトに取り組んでいます。正直なところ、私はあまり簡単な質問の前にそれを(または任意のWeb開発)経験はほとんどありません。フォームを使用して部分的なビューからコントローラのアクションに複合型を渡す
私は、ウェブビューのさまざまな間で共有される検索ボックスの部分的なビューを持っています。ビューにはドロップダウンリストとテキストボックスがあります。ユーザーが検索ボタンを使用してフォームを投稿すると、値がSearchFilterModel
オブジェクトとして検索コントローラのインデックスアクションに到達する必要があります。
フォームは、検索コントローラでインデックスアクションを呼び出しています。それは働いています(添付のコードを参照)。しかし、問題は、インデックスメソッドのidパラメータ(それはSearchFilterModel
である必要があります)が届かないことです(nullです)。
フォームからオブジェクトをコントローラに渡す方法がわかりません。 ¿私が間違っていることは何ですか?
事は、私がもので、関連する何かがSearchFilterModel
ことがありますね。私は(送信されるパラメータの種類を変更new { id = "something" }
でnew { id = search }
を交換した場合、その文字列が到着(それが動作)、または私はnew { id = 1 }
を書くならば、int型が到着していますネイティブ型が、複雑なものではありません。
任意のアイデアは?
@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>
}
}
検索コントローラのindexアクション
[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();
}
あなたはその構文クラス定義と一致したJSONを構築し、あなたの行動に渡ってこのデータを送信し、MVCは、あなたのクラスにJSONの変換を処理すべきか、Deserialize
を使用することができますする必要が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; }
}
あなたは、部分的なビューからインデックスコントラにSearchFilterModelオブジェクトを渡したいと思うようです。 –
@COLDTOLDこれは、タイトルが言うことです:)¿任意のアイデア? –
SearchFilterModelクラス – Baz1nga