Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
下拉列表MVC#_C#_.net_Asp.net Mvc 2_Drop Down Menu - Fatal编程技术网

下拉列表MVC#

下拉列表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

我想创建一个dropdownlist,但我正在努力解决如何显示它

我有以下代码

控制器

            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仍然是一个好主意。。谢谢你的建议;)