Asp.net mvc 3 在Asp.net MVC中使用optgroup功能的帮助程序代码
我没有与助手一起工作的经验,所以我有点困在使用手头的代码上 我的要求很简单,我只需要Asp.net mvc 3 在Asp.net MVC中使用optgroup功能的帮助程序代码,asp.net-mvc-3,html-helper,Asp.net Mvc 3,Html Helper,我没有与助手一起工作的经验,所以我有点困在使用手头的代码上 我的要求很简单,我只需要DropDownListFor扩展方法中的optgroup功能。在搜索时,我遇到了这个问题,并将其复制到一个名为MyExtensionClass.cs的文件中 但是,我不知道如何使用它或调用本文中定义的扩展方法。请告诉我如何将此与我的列表一起使用 现在,下面是selectlist的控制器代码,我想对其使用扩展方法 ViewBag.ParentCategoryId = new SelectList(db.Categ
DropDownListFor
扩展方法中的optgroup功能。在搜索时,我遇到了这个问题,并将其复制到一个名为MyExtensionClass.cs的文件中
但是,我不知道如何使用它或调用本文中定义的扩展方法。请告诉我如何将此与我的列表一起使用
现在,下面是selectlist的控制器代码,我想对其使用扩展方法
ViewBag.ParentCategoryId = new SelectList(db.Categories, "Id", "Name");
这是我的视图代码
@Html.DropDownListFor(model => model.Product.CategoryId,
(IEnumerable<SelectListItem>)ViewBag.CategoryId, "---Choose Category---",
new { @class = "required" })
@Html.DropDownListFor(model=>model.Product.CategoryId,
(IEnumerable)ViewBag.CategoryId“”--选择类别--“,
新的{@class=“required”})
请帮助我使用optgroup将此方法升级为扩展方法。我们使用Serge Zab的帮助程序进行optgroup下拉列表。以下是一个示例: 视图模型:
public class OurViewModel
{
public int? TypeId { get; set; }
public IEnumerable<GroupedSelectListItem> GroupedTypeOptions { get; set; }
}
public ActionResult Add()
{
var model = new OurViewModel
{
// fill with initial values
};
PutTypeDropDownInto(model);
return View(model);
}
[NonAction]
private void PutTypeDropDownInto(OurViewModel model)
{
model.GroupedTypeOptions = _repos.GetTypes()
.OrderBy(t => t.Category.EnglishName).ThenBy(t => t.EnglishName)
.Select(t => new GroupedSelectListItem
{
GroupKey = t.Category.RevisionId.ToString(),
GroupName = t.Category.EnglishName,
Text = t.EnglishName,
Value = t.RevisionId.ToString()
}
);
}
视图
@Html.DropDownGroupListFor(m => m.TypeId, Model.GroupedTypeOptions,
"[Select a type]")
请注意,您不能使用常规的SelectList。您必须使用他的GroupedSelectListItem类的集合。此外,我们的解决方案不使用viewbag。下拉列表在viewmodel上是强类型的
更新
要使html助手在视图中工作,视图需要能够找到它。您可以在MyExtensionClass.cs命名空间的视图顶部添加@using指令,也可以将该命名空间添加到视图特定的web.config中,如下所示:
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="Microsoft.Web.Mvc" />
<add namespace="Namespace.For.MyExtensionClass" />
</namespaces>
</pages>
这是在5.2版的ASP.NET MVC中添加的 SelectListItem中的属性
Group
允许您为每个项目指定一个组
Html.DropDownList()
和DropDownListFor()
现在根据项目列表中包含的组生成optgroup
元素。