2

MVC アプリケーション (カミソリ構文) を開発していますが、Html.Action呼び出しにパラメーターを渡す際に問題があります。以下は私が実装している検索ページです。モデルには、ドロップダウンで使用される個別の値が含まれていることに注意してください。

ビューからの呼び出し:

@using(Html.BeginForm("Search", "Home", FormMethod.Get, null)){

@Html.LabelFor(model => model.siteCode)
@Html.DropDownListFor(model => model.siteCode, new SelectList(Model.siteCode), "All")

@Html.LabelFor(model => model.group)
@Html.DropDownListFor(model => model.group, new SelectList(Model.group), "All")
}

@Html.Action("ShowOrderData", "Home", new {siteCode = Model.siteCode, group = Model.group}

コントローラーでのアクション:

public ActionResult ShowOrderData(string siteCode = "",
                                        string group = "",)
{
        var model = _db.ToolOrders
            .Where(r => r.SiteCD_LOC.Contains(siteCode))
            .Where(r => r.GroupCode.Contains(group))

return PartialView("_OrderData", model);
}

注: いくつかの構文エラーがある可能性があります。さらに約 10 個のパラメーターが渡されるため、コード ブロックを詰まらせたくありませんでした。

したがって、このコードでデバッグすると、空の文字列がShowOrderDataコントローラーに送信されます。Html.Action 呼び出し ( ) に .ToString を追加しようとしましたが、Model.siteCode.ToString()代わりに LINQ ステートメントが表示されます。モデルには以前のリクエストからの情報が含まれていないため、この方法は間違っていると思います。

QueryString から部分ビューにデータを正しく送信するにはどうすればよいですか? request.querystring を介して queryString に直接アクセスするメソッドを見てきましたが、それをビューで使用するのは悪い習慣だとも聞きました。

ありがとう

4

1 に答える 1

0

使用する:

  @Html.RouteLink()

アクションの代わりに

于 2012-11-07T18:22:41.540 に答える