0

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

@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”。

4

1 回答 1

0

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

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

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

于 2013-10-17T14:03:34.280 回答