带有下拉列表和 SelectListItem 辅助的 Asp.Net MVC
我正在尝试构建一个 Dropdownlist,但与 Html.DropDownList 渲染作斗争。
我有一堂课:
public class AccountTransactionView
{
public IEnumerable<SelectListItem> Accounts { get; set; }
public int SelectedAccountId { get; set; }
}
这基本上是我现在的视图模型。帐户列表以及用于返回所选项目的属性。
在我的控制器中,我像这样准备好数据:
public ActionResult AccountTransaction(AccountTransactionView model)
{
List<AccountDto> accounts = Services.AccountServices.GetAccounts(false);
AccountTransactionView v = new AccountTransactionView
{
Accounts = (from a in accounts
select new SelectListItem
{
Text = a.Description,
Value = a.AccountId.ToString(),
Selected = false
}),
};
return View(model);
}
现在的问题是:
我然后尝试在我的视图中构建下拉列表:
<%=Html.DropDownList("SelectedAccountId", Model.Accounts) %>
我收到以下错误:
具有键“SelectedAccountId”的 ViewData 项的类型为“ System.Int32',但必须是“IEnumerable”类型。
为什么它要我返回整个项目列表?我只想要选定的值。我应该怎么做?
I am trying to build a Dropdownlist, but battling with the Html.DropDownList rendering.
I have a class:
public class AccountTransactionView
{
public IEnumerable<SelectListItem> Accounts { get; set; }
public int SelectedAccountId { get; set; }
}
That is basically my view model for now. The list of Accounts, and a property for returning the selected item.
In my controller, I get the data ready like this:
public ActionResult AccountTransaction(AccountTransactionView model)
{
List<AccountDto> accounts = Services.AccountServices.GetAccounts(false);
AccountTransactionView v = new AccountTransactionView
{
Accounts = (from a in accounts
select new SelectListItem
{
Text = a.Description,
Value = a.AccountId.ToString(),
Selected = false
}),
};
return View(model);
}
Now the problem:
I am then trying to build the Drop down in my view:
<%=Html.DropDownList("SelectedAccountId", Model.Accounts) %>
I am getting the following error:
The ViewData item that has the key 'SelectedAccountId' is of type 'System.Int32' but must be of type 'IEnumerable'.
Why would it want me to return the whole list of items? I just want the selected value. How should I be doing this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您有一个视图模型,您的视图是强类型的 =>使用强类型助手:
另请注意,我使用
SelectList
作为第二个参数。在您的控制器操作中,您返回的是作为参数传递的视图模型,而不是您在正确设置了 Accounts 属性的操作中构建的视图模型,因此这可能会出现问题。我已经清理了一下:
You have a view model to which your view is strongly typed => use strongly typed helpers:
Also notice that I use a
SelectList
for the second argument.And in your controller action you were returning the view model passed as argument and not the one you constructed inside the action which had the Accounts property correctly setup so this could be problematic. I've cleaned it a bit:
第 1 步:您的模型类
第 2 步:调用此方法来填充控制器操作中的下拉列表
第 3 步:填充您的下拉列表查看如下
Step-1: Your Model class
Step-2: Call this method to fill Drop down in your controller Action
Step-3: Fill your Drop-Down List of View as follows