8

部分表示

@model OsosYeni23072012.Models.TblMeters
<h3>
    Model.customer_name
</h3>
<h3>
    Model.meter_name
</h3>

コントローラ

[HttpGet]
public ActionResult MeterInfoPartial(string meter_id)
{
    int _meter_id = Int32.Parse(meter_id);
    var _meter = entity.TblMeters.Where(x => x.sno == _meter_id).FirstOrDefault();

    return PartialView("MeterInfoPartial", _meter);
}

かみそり

@Html.DropDownList("sno", new SelectList(Model, "sno", "meter_name"), "-- Select Meter --", new { id = "meters"})

@Html.Partial("MeterInfoPartial")

ドロップダウンリストが変更された場合、部分ビューをロードしたい。しかし、どうすればこれができるのかわかりません。これに関する例は見つかりません。私はactionlinkでこれを行います。しかし、以前はドロップダウンを使用していませんでした。

コントローラーのパラメーターmeter_idは、ドロップダウンリストの選択値と同じです。

ありがとう。

4

2 に答える 2

24

ドロップダウンのイベントをサブスクライブしてから.change()、AJAX リクエストをトリガーできます。

<script type="text/javascript">
    $(function() {
        $('#meters').change(function() {
            var meterId = $(this).val();
            if (meterId && meterId != '') {
                $.ajax({
                    url: '@Url.Action("MeterInfoPartial")',
                    type: 'GET',
                    cache: false,
                    data: { meter_id: meterId }
                }).done(function(result) {
                        $('#container').html(result);
                });
            }
        });
    });
</script>

次に、id を指定してパーシャルを div でラップします。

<div id="container">
    @Html.Partial("MeterInfoPartial")
</div>

また、コントローラー アクションで解析するのはなぜですか。これはモデル バインダーに任せます。

[HttpGet]
public ActionResult MeterInfoPartial(int meter_id)
{
    var meter = entity.TblMeters.FirstOrDefault(x => x.sno == meter_id);
    return PartialView(meter);
}

FirstOrDefaultデータベースに一致するレコードが見つからない場合は、meter_id返さnullれ、モデルにアクセスしようとするとパーシャルがクラッシュするため、注意してください。

于 2012-08-14T07:24:43.207 に答える
0
<script type="text/javascript">
    $(function() {
        $('#addnews').click(function() {
                $.ajax({
                    url: '@Url.Action("AddNews", "Manage")',
                    type: 'GET',
                    cache: false,
                }).done(function(result){
                    $('#containera').html(result);
                });
        });
    });
</script>
于 2016-09-04T05:31:57.840 に答える