1

特定のテーブルのすべてのエントリをリストする一般的な「インデックス」ページがあり、グリッド内のデータをフィルタリングできるサイドバーがあります。私のモデルは次のとおりです。

public class GenericFormIndexModel
    {
        public IEnumerable<IGenericForm> Entries { get; set; }

        public FormSearchQueryModel Query { get; set; }
    }

かみそりファイルには、次のようなhtmlがあります。

@using (Html.BeginForm("Search", controllerName, FormMethod.Post, new { id = "fSearch" }))
        {
            @Html.HiddenFor(m => m.Query.PageIndex)
            @Html.HiddenFor(m => m.Query.PageSize)
            @Html.HiddenFor(m => m.Query.SortBy)
            ...etc
            @Html.TextBoxFor(m => m.Query.SerialNumber, null, new { @class = "inputbox right-search-field" })
        ...etc

そして、私は次のようにアクションを定義しました:

[HttpPost]
        public virtual ActionResult Search(FormSearchQueryModel queryModel)
        {
            //Implementation ommited
        }

ここで問題は、フォームからの値が実際に送信されることですが、アクションの「queryModel」引数にバインドされません。それらは Request.Form["Query.Something"] で見ることができます。

すべてのエントリやその他のものを投稿する必要はないため、モデル全体を送信したくありません。MVC をネストされたプロパティにバインドすることは可能ですか、それとも Reqest.Form[""] の使用にこだわっていますか?

4

1 に答える 1

0

Prefix以下のようにプロパティを設定しようとしましたか、

[HttpPost]
public virtual ActionResult Search([Bind(Prefix="Query")]FormSearchQueryModel queryModel)
{
   //Implementation ommited
}

この属性には、 などのBind他のプロパティがあり、バインドする必要がある投稿された値を制御できます。IncludeExclude

于 2012-06-06T09:38:50.730 に答える