检索JsonResult函数中的选定项文本

时间:2011-03-03 15:33:59

标签: c# .net asp.net asp.net-mvc drop-down-menu

我正在使用JQGrid插件创建一个带有表的MVC项目。我想使用DropDownList来允许用户指定一个值,该值将在SQL查询中用于从表中检索特定数据。即用户可以从列表中选择一个国家/地区,该表格将仅显示该国家/地区的项目。

我的问题是,在我的控制器类中,我无法弄清楚如何从我的表的数据绑定函数中的DropDownList中检索所选项目。

视图中的DropDownList

<%= Html.DropDownList("Countries")%>

在我的控制器中设置DropdownList

//dt is a DataTable which holds the values for my list
List<SelectListItem> countries = new List<SelectListItem>();
for (int i = 0; i < dt.Rows.Count; i++)
    countries.Add(new SelectListItem { Text = dt.Rows[i][0].ToString(), Value = "" + i });

JsonResult DataBind()方法,我想访问所选的值

public JsonResult Charges_DataRequested()
{
    string country = "Dropdownbox Selected Text";
}

问题似乎是在JsonResult函数中我无法访问ViewData或我的ViewModel,当我尝试访问它们时,它总是似乎为null。我对MVC和Web开发都很陌生,任何建议都会非常受欢迎。

2 个答案:

答案 0 :(得分:1)

感谢您的回答,它让我走上正轨。我意识到网格也有一个 postdata 参数。我能够为我的下拉列表创建一个javascript回发函数,并调用jqGrid'setGridParam'函数将我的下拉列表文本添加到网格postdata。我还可以触发网格重新加载,并在我的控制器Jsonresult函数中获取字符串。

Javascript

$('#Countries').change(function() {
        var value = $("#Countries option:selected").text();
        $("#ChargesGrid").setGridParam ({
            postData:{
                selectedCountry:$("#Countries option:selected").text()}
        });

        $("#ChargesGrid").trigger("reloadGrid");
        alert(value);
    });

控制器

public JsonResult Charges_DataRequested(string selectedCountry)
    {
        string country = selectedCountry;
    }

答案 1 :(得分:0)

jqGrid有一个 userdata 属性,您可以在其中存储此数据,以便在发布时可用。这可能意味着您必须更新此下拉列表更改。

jQuery("#GridId").getGridParam('userData').SelectedText

我只是用另一个来设置加载数据,但认为它可以为你做另一种方式。在将网格json创建为

时,我会在控制器操作中设置上面的SelectedText
userdata = new { SelectedText = "SomeValue" }

唯一的麻烦是它是jqGrid代码中的私有集等效。