MVC4:request [field]意外返回System.Web.Mvc.SelectListItem

时间:2013-10-17 13:53:30

标签: asp.net-mvc-4 razor

我有一个显示数据列表的索引页面。可以通过从下拉列表中选择来筛选列表。这没关系。下拉列表中的第一项具有空白值和文本“(所有用户)”。因此,这可以达到预期效果 - 如果您没有选择要过滤的项目,它会显示列表中的所有值。剃须刀非常简单:

@using (Html.BeginForm())
{ 
    @Html.Label("userName", "View user:")
    @Html.DropDownList("userName", ViewBag.UserName as SelectList, new { onchange = "this.form.submit()" })
}

除了查看页面上的数据列表外,我还提供了当前过滤项目的文本文件下载。剃须刀也非常简单:

@using (Html.BeginForm("Download", "Checkout"))
{ 
    @Html.Hidden("userName", Request["userName"])
    <input type="submit" value="Download Metadata from Checked Out Files" />
}

如果在过滤器下拉列表中选择了某些内容,则此功能正常。但是如果没有选择任何内容,则Request [“userName”]返回“System.Web.Mvc.SelectListItem”。我希望它只是空白,因为当没有选择任何内容时,下拉列表会出现。会发生什么是将System.Web.Mvc.SelectListItem值传递给我的下载操作并将其视为过滤器值。

所以,问题是如何使它在我的过滤器下拉列表中的空白选择不会被误认为是“System.Web.Mvc.SelectListItem”。

1 个答案:

答案 0 :(得分:0)

尝试将@Html.DropDownList更改为此次重载,string.Empty为您提供下拉列表中的默认空白选项

@Html.DropDownList("userName", ViewBag.UserName as SelectList, string.Empty, new { onchange = "this.form.submit()" })

我希望我没有误解你的问题!