【问题标题】:MVC 3 Webgrid with dropdownlist, get selected value on postback带有下拉列表的 MVC 3 Webgrid,在回发时获取选定的值
【发布时间】:2012-09-30 04:56:30
【问题描述】:

我有一个带有下拉列表的 webgrid,并且 onchange 它回发页面。我正在尝试获取下拉列表的选定值。

以下是我的控制器。

 public ViewResult Index()
            {
                //var albums = db.Albums.Include(a => a.Artist).Include(a => a.Genre);

                var model = new AlbumActionModel { Actions = new[] { new SelectListItem { Text = "Accept", Value = "Accept" }, new SelectListItem { Text = "Deny", Value = "Deny" } }, Albums = db.Albums.Include(a => a.Artist).Include(a => a.Genre) };
                return View(model);
            }

以下是我的观点。

<div>
   @{
    WebGrid grid = new WebGrid(Model.Albums, defaultSort: "Title", selectionFieldName: "SelectedRow");
    }
   @using (Html.BeginForm("Index", "Album", FormMethod.Post, new { id = "TheForm" }))
   {
    @grid.GetHtml(columns: grid.Columns(grid.Column("Edit",
                                                    format: @<text> @Html.ActionLink("Edit", "Edit", new { id = item.AlbumId })></text>),
                           grid.Column("AlbumId"),
                           grid.Column("Title"),
                           grid.Column("Action",
                                        format:
                                            @<span>
                                            @{var index = item.AlbumId.ToString();}
                                            @Html.DropDownList("Actions" +((string)index), Model.Actions, "--Select One--", new { onchange = "this.form.submit();" })
                                            </span>),
                           grid.Column("Delete",
                                        format: @<text> @Html.ActionLink("Delete", "Delete", new { id = item.AlbumId })></text>)))
</div>

提前致谢。

【问题讨论】:

    标签: asp.net-mvc drop-down-menu postback viewmodel webgrid


    【解决方案1】:

    在您的下拉列表中尝试以下语句:

    @Html.DropDownList("Actions" +((string)index), Model.Actions, "--Select One--",new { @onchange = "Submit(this.value);" })
    

    现在在你的&lt;script&gt;标签中写一个函数来发布到页面

        <script type="text/javascript">
        function Submit(e)
        {
        //write it to post to the controller using ajax 
        $.ajax({
                        type: 'POST',
                        dataType: 'json',
                        url: '@Url.Action("Submit", "ControllerName")',
                        data: ({ value: e}), 
                        success: function (result) {
                            //do something
                        }
                            ,
                        error: function (result) {
                            //do something
                        }
                    });
        }
    </script>
    

    希望这会有所帮助。

    【讨论】:

    • 抱歉,这不是我想要的。我真正想要的是在单击提交按钮后获取所有选定的值。 (它可能会以某种方式出现在模型或任何地方)此外,此功能无法正常工作。可能是我不能很好地配置它,但它让我用 Model.Actions 更改了 (IEnumerable)item.AvailableDevices) 并且找不到索引的来源。还是谢谢...
    猜你喜欢
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多