asp.net-mvc – DropDownList设置在asp.net MVC中选择项目
|
我注意到在我看来,一个错误在asp.net MVC或只是我做错了。我目前使用1.0,所以也许这是将在2.0版本中解决的。但无论如何,这里我们去。 当我的视图模型具有与下拉列表的声明的ID相同的属性时,所选项目被忽略,并且呈现的html没有选择。 这里是我的视图,其中声明的ID是与模型中的列表相同的名称: <table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<%= Html.DropDownList("IsMultipleServicers",Model.IsMultipleServicers) %>
</td>
</tr>
</table>
和渲染的Html <table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<select id="IsMultipleServicers" name="IsMultipleServicers">
<option value="false">No</option>
<option value="true">Yes</option>
</select>
</td>
</tr>
</table>
现在让我们做一个小的改变。我将更改声明的ID是不同的东西。 这里是我的视图: <table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<%= Html.DropDownList("MultipleServicers",Model.IsMultipleServicers) %>
</td>
</tr>
</table>
现在渲染的html: <table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<select id="IsMultipleServicers" name="IsMultipleServicers">
<option value="false">No</option>
<option selected="selected" value="true">Yes</option>
</select>
</td>
</tr>
</table>
注意,现在我得到一个选择的选项,将是列表中的第二个元素。 这里是我的ViewModel只是把一切捆绑在一起: using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MVCProject.Models.ViewModels.Service
{
public class ServiceViewModel : ViewModel
{
public List<SelectListItem> IsMultipleServicers { get; set; }
}
}
这里是我的行动: [AcceptVerbs(HttpVerbs.Get)]
public virtual ActionResult Service()
{
return View(new ServiceViewModel()
{
IsMultipleServicers = BuildBooleanSelectList(true)
};
}
private List<SelectListItem> BuildBooleanSelectList(bool isTrue)
{
List<SelectListItem> list = new List<SelectListItem>();
if (isTrue)
{
list.Add(new SelectListItem() { Selected = false,Text = "No",Value = "false" });
list.Add(new SelectListItem() { Selected = true,Text = "Yes",Value = "true" });
}
else
{
list.Add(new SelectListItem() { Selected = true,Value = "false" });
list.Add(new SelectListItem() { Selected = false,Value = "true" });
}
return list;
}
解决方法我认为问题是关于DropDownList重载的混乱:> Html.DropDownList(string name)查找名为和IEnumerable< SelectListItem>类型的视图模型属性。它将使用从列表中选择的项目(SelectListItem.Selected == true),除非有相同名称的表单后置值。 您的代码使用第二个重载,但指定一个“value”属性不存在(“MultipleServicers”)。 要解决您的问题,请使用第一个重载: <%= Html.DropDownList("IsMultipleServicers") %>
或者,为您的视图模型添加一个字符串MultipleServicers属性,并将其填充到控制器中。我建议这个解决方案,因为它遇到了几个问题,初始显示,后显示和映射后的数据到视图/后模型: public class ServiceViewModel : ViewModel
{
public string MultipleServicers { get; set; }
public List<SelectListItem> IsMultipleServicers { get; set; }
}
然后为您的HTML: <%= Html.DropDownList(Model.MultipleServicers,Model.IsMultipleServicers) %> 这种技术也映射到MVC2: <%= Html.DropDownListFor(x => x.MultipleServicers,Model.IsMultipleServicers) %> (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 如何为Html.TextBox帮助器指定属性,同时保持
- asp.net-mvc – 在ASP.Net MVC中,如何创建将javascript和cs
- ASP.NET 5,.NET Core和ASP.NET Core 5有什么区别?
- 使用Ninject绑定WebApi过滤器属性
- asp.net-mvc – 如何根据设备类型更改ASP.NET MVC视图?
- 如何在服务器上安装ASP.NET MVC 5?
- asp.net – Ajax.ActionLink调用控制器两次
- asp.net – 自定义Web字体在IE9中不起作用
- asp.net-mvc-4 – 如何让你的MVC控制器DRY为Edit- Save- Va
- [你必须知道的.NET] 开篇有益
- asp.net-mvc-2 – 什么时候使用View()与Redirect
- asp.net – 我被困在UpdatePanel陷阱中
- 查看服务器运行多少个ASP.NET Core程序
- asp.net – 如何可靠地跟踪CSS使用情况?
- asp.net-core – Controller.json设置Serializat
- asp.net-mvc – asp.net mvc 3预选Html.DropDown
- asp.net-mvc – 在ASP.NET MVC项目中访问elmah.a
- asp.net中Session缓存与Cache缓存的区别分析
- asp.net – 以编程方式将CSS类添加到ListItem
- asp.net – 如何在vNext项目中的方法上应用Outpu
