1

mvc 2010 Expressを使用してc#でアプリケーションを作成しており、3 つの異なるテーブルから作成された 1 つのビューがあります。各市場には多くの国があり、各国には複数の分析 ( で定義) を含めることができます。tmarketstcountriestanalysiscode

参照する分析を選択するビューがあり (コードがコントローラーに渡されます)、次のビューにはさまざまな市場のドロップダウン リストがあります (ユーザーがその市場の国の分析を確認できるようにするため)その分析)。2 番目のビューには他のオプションも必要なので、2 つの異なるビューが必要です。

Informコントローラ:

public ActionResult Filter(string id)
{
    var merc = from a in dre.v_AnalysisCountry
               where a.Code == id
               select a;
    var query1 = merc.Select (a => new { a.Code,a.Market}).Distinct().OrderBy(a => a.Market);
    ViewBag.mar = new SelectList(query1.AsEnumerable(), "Code", "Market");
    return View();
}

ビューFilter:

<script type="text/javascript">
$(function () {
    $("#Market").change(function () {
    var actionUrl = $('#TheForm1').attr('action') + '/' + $('#Market').val();
        $('#TheForm1').attr('action', actionUrl);
        $('#TheForm1').submit();
    });
});
</script>

@using (Html.BeginForm("FilterAnMark", "Inform", FormMethod.Post, new { id = "TheForm1"})){
@Html.DropDownList("Market", (SelectList)ViewBag.mar, "Select a market")

}

ドロップ ダウン リストにさまざまな市場を入力するために、コンサルトはcodeおよびmarket自体からそれらを選択し、後で分析のコードを次の のコントローラーに渡すことができるようにしますview

問題は、ドロップダウンリストcontrollerのユーザーだけでなく、マーケットも渡す必要があることです。私はこのようなことをしようとしました:

@using (Html.BeginForm("FilterAnMark", "Inform", FormMethod.Post, new { id = "TheForm1", id2 = @ViewBag.idAn })){
    @Html.DropDownList("Market", (SelectList)ViewBag.mar, "Select a market")
}

そして私の中でcontroller

var idAnalysis = (from v in dre.v_AnalysisCountry
                  where v.Code == id
                  select v.IdAnalysisCountry).FirstOrDefault();
ViewBag.idAn = idAnalysis;

しかし、それは機能していません。

-------------------------------------------------- --------編集------------------------------------------ -------------------------

ビューに 隠し属性を追加しました。

@{
    string code= ViewBag.code;
}

@using (Html.BeginForm("FilterAnMark", "Inform", FormMethod.Post, new { id = "TheForm1"})){
    @Html.DropDownList("Market", (SelectList)ViewBag.mar, "Select a market")
    @Html.Hidden("code", code)
}

そして、コードを次のビューに渡すと機能します。ここでの問題は、次のビューで発生します。国を表示する ためにWebGridを使用しています。

WebGrid grid = new WebGrid(Model, defaultSort: "Market", rowsPerPage: 15);

ユーザーがテーブルの2 ページ目を表示しようとすると、この隠し属性を記憶していないため、空白のテーブルが表示されます。

別の解決策、または私が見つけたこの部分的な解決策の修正を手伝っていただければ、非常に感謝しています。前もって感謝します!

4

1 に答える 1