下拉列表MVC#
我想创建一个dropdownlist,但我正在努力解决如何显示它 我有以下代码 控制器下拉列表MVC#,c#,.net,asp.net-mvc-2,drop-down-menu,C#,.net,Asp.net Mvc 2,Drop Down Menu,我想创建一个dropdownlist,但我正在努力解决如何显示它 我有以下代码 控制器 var trader = new DisplayTradersAttachedToCategoryViewModel { Description = data.Description, Id = data.Id, BusinessName = traders.Sele
var trader = new DisplayTradersAttachedToCategoryViewModel
{
Description = data.Description,
Id = data.Id,
BusinessName = traders.Select(x => new BusinessNameViewModel { BusinessName = x.BusinessName, Id = x.Id }),
Categories = _service.GetCategories().Select(x => new DropDownViewModel {Id = x.Id, Description = x.Description }).OrderBy(x=>x.Description)
};
var trader = new DisplayTradersAttachedToCategoryViewModel
{
Description = data.Description,
Id = data.Id,
BusinessName = traders.Select(x => new BusinessNameViewModel { BusinessName = x.BusinessName, Id = x.Id }),
Categories = _service.GetCategories().Select(x => new SelectListItem() {Text = x.Description, Value = x.Id.ToString(), Selected = true})
};
[HttpPost]
public ActionResult DeleteCategoryFromTradersAttachNewCategory(DisplayTradersAttachedToCategoryViewModel displayTradersAttachedToCategoryViewModel)
{
if (displayTradersAttachedToCategoryViewModel.Button == "Back to List") return RedirectToAction("ViewCategories");
//Update traders with new category
//delete category
//if (_service.DeleteCategory((int)deleteCategoryViewModel.Id))
//{
// return RedirectToAction("ViewCategories");
//}
return View("DeleteCategoryAttachedToTraders", displayTradersAttachedToCategoryViewModel);
}
Categories = _service.GetCategories(id).Select(x => new SelectListItem {Text = x.Description, Value = x.Id.ToString()})
DisplayTraderSattachedLocategoryViewModel
public class DisplayTradersAttachedToCategoryViewModel
{
public int Id { get; set; }
public string Description { get; set; }
[UIHint("BusinessNameDisplayTemplate")]
public IEnumerable<BusinessNameViewModel> BusinessName { get; set; }
[UIHint("DropDownEditorTemplate")]
public IEnumerable<DropDownViewModel> Categories { get; set; }
}
public class DropDownViewModel
{
public int Id { get; set; }
public string Description { get; set; }
}
public int Id { get; set; }
public string Description { get; set; }
[UIHint("BusinessNameDisplayTemplate")]
public IEnumerable<BusinessNameViewModel> BusinessName { get; set; }
public IEnumerable<SelectListItem> Categories { get; set; }
public int Category { get; set; }
public string Button { get; set; }
public IEnumerable<SelectListItem> Categories { get; set; }
DropDownEditorTemplate
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<Internal.ViewModels.Controller.DropDownViewModel>>" %>
<table class="aligncenter">
<tr class="tRow left"><%
if (Model != null)
{%>
<td>
<%=Html.DropDownList("Category", Model.)%>
</td><%
}%>
</tr>
</table>
DisplayTraderSattachedLocategoryViewModel
public class DisplayTradersAttachedToCategoryViewModel
{
public int Id { get; set; }
public string Description { get; set; }
[UIHint("BusinessNameDisplayTemplate")]
public IEnumerable<BusinessNameViewModel> BusinessName { get; set; }
[UIHint("DropDownEditorTemplate")]
public IEnumerable<DropDownViewModel> Categories { get; set; }
}
public class DropDownViewModel
{
public int Id { get; set; }
public string Description { get; set; }
}
public int Id { get; set; }
public string Description { get; set; }
[UIHint("BusinessNameDisplayTemplate")]
public IEnumerable<BusinessNameViewModel> BusinessName { get; set; }
public IEnumerable<SelectListItem> Categories { get; set; }
public int Category { get; set; }
public string Button { get; set; }
public IEnumerable<SelectListItem> Categories { get; set; }
当我通过Submit按钮访问控制器时,DisplayTraderSattachedLocategoryViewModel中没有存储任何内容。我做错了什么
提前感谢您的帮助
克莱尔试着这样做:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<Tameside.Internal.ViewModels.BuyWithConfidence.DropDownViewModel>>" %>
<select>
<% foreach(var category in Model.Categories) { %>
<option value="<%= Html.Encode(category.Id) %>"><%= Html.Encode(category.Name %></option>
<% } %>
</select>
当然,Id和姓名只是我脑海中的成员。使用类别类中的类别。您可以尝试将其强制转换为
(IEnumerable)
,即
<%=Html.DropDownList("Category", (IEnumerable<SelectListItem>)Model.Categories)%>
感谢ukaszW.pl/ajay_whiz的帮助:-)最后我混合使用了两种答案: 控制器
var trader = new DisplayTradersAttachedToCategoryViewModel
{
Description = data.Description,
Id = data.Id,
BusinessName = traders.Select(x => new BusinessNameViewModel { BusinessName = x.BusinessName, Id = x.Id }),
Categories = _service.GetCategories().Select(x => new DropDownViewModel {Id = x.Id, Description = x.Description }).OrderBy(x=>x.Description)
};
var trader = new DisplayTradersAttachedToCategoryViewModel
{
Description = data.Description,
Id = data.Id,
BusinessName = traders.Select(x => new BusinessNameViewModel { BusinessName = x.BusinessName, Id = x.Id }),
Categories = _service.GetCategories().Select(x => new SelectListItem() {Text = x.Description, Value = x.Id.ToString(), Selected = true})
};
[HttpPost]
public ActionResult DeleteCategoryFromTradersAttachNewCategory(DisplayTradersAttachedToCategoryViewModel displayTradersAttachedToCategoryViewModel)
{
if (displayTradersAttachedToCategoryViewModel.Button == "Back to List") return RedirectToAction("ViewCategories");
//Update traders with new category
//delete category
//if (_service.DeleteCategory((int)deleteCategoryViewModel.Id))
//{
// return RedirectToAction("ViewCategories");
//}
return View("DeleteCategoryAttachedToTraders", displayTradersAttachedToCategoryViewModel);
}
Categories = _service.GetCategories(id).Select(x => new SelectListItem {Text = x.Description, Value = x.Id.ToString()})
DisplayTraderSattachedLocategoryViewModel
public class DisplayTradersAttachedToCategoryViewModel
{
public int Id { get; set; }
public string Description { get; set; }
[UIHint("BusinessNameDisplayTemplate")]
public IEnumerable<BusinessNameViewModel> BusinessName { get; set; }
[UIHint("DropDownEditorTemplate")]
public IEnumerable<DropDownViewModel> Categories { get; set; }
}
public class DropDownViewModel
{
public int Id { get; set; }
public string Description { get; set; }
}
public int Id { get; set; }
public string Description { get; set; }
[UIHint("BusinessNameDisplayTemplate")]
public IEnumerable<BusinessNameViewModel> BusinessName { get; set; }
public IEnumerable<SelectListItem> Categories { get; set; }
public int Category { get; set; }
public string Button { get; set; }
public IEnumerable<SelectListItem> Categories { get; set; }
public IEnumerable Categories{get;set;}
DeleteCategoryAttachedToTraders.aspx
using (Html.BeginForm("DeleteCategoryFromTradersAttachNewCategory", "Controller",FormMethod.Post))
<%=Html.DropDownList("Categories")%>
<%=Html.DropDownList("Category", Model.Categories)%>
此强制转换将不起作用。。它如何将类别强制转换为SelectListItem?也。。。您将整个对象作为参数提供给DropDownList helper,在我看来,它无法识别它生成的html代码中应该显示的内容和应该是值成员的内容。请试用并查看。。。我也给了它另一个选择。。。你可以用SelectListHello ajay__whiz来编写每一条语句,而不是用SelectListHello ajay___________________________________?目前,该值没有通过视图模型返回。只需将“name”属性添加到select标记中即可。将我的帖子标记为answer仍然是一个好主意。。谢谢你的建议;)