- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚刚开始在 MVC 项目中学习 AutoMapper。我有一个基本实体“Attendee”,其中包含一个性别字符串字段(可能值为“M”或“F”)。
我已经在 Attendee 和 AttendeeEditView 对象之间创建了一个基本映射。我想要做的是将模型端的“M”或“F”性别字符串转换为 ViewModel 端的 SelectList,并在列表中选择适当的值。
我想我需要一个 ValueResolver 来做这件事……这是我写的:
public class GenderMenuResolver : ValueResolver<Attendee, SelectList> {
protected override SelectList ResolveCore( Attendee source ) {
List<object> items = new List<object>(){
new{ Value = "F" , Text = "Female" },
new{ Value = "M" , Text = "Male" }
};
string Gender = source.Gender ?? "";
string selectedValue = new List<string>() { "M", "F" }.Contains( Gender.ToUpper() ) ? Gender.ToUpper() : "";
SelectList GenderMenu = new SelectList(
items,
"Value",
"Text",
selectedValue
);
return GenderMenu;
}
}
还有我的映射代码:
Mapper.CreateMap<Attendee, AttendeeEditView>()
.ForMember( dest => dest.Gender, opt => opt.ResolveUsing<GenderMenuResolver>() );
List<AttendeeEditView> ViewModel = Mapper.Map<List<AttendeeEditView>>( Attendees );
单步执行我可以看到这段代码执行并输出了一个正确的选择列表。但是,我收到以下错误:
Mapping types: SelectList -> SelectList System.Web.Mvc.SelectList -> System.Web.Mvc.SelectList
Destination path: List`1[0].Gender.Gender
Source value: System.Web.Mvc.SelectList
首先,“.Gender.Gender”映射似乎不正确。
但问题的根源是什么……内部异常消息揭示了这一点:
"Type 'System.Web.Mvc.SelectList' does not have a default constructor"
任何人都可以帮助我确定我做错了什么,或者我应该使用更好的方法吗?谢谢。
最佳答案
我认为你让这件事变得比需要的更困难。并非所有内容都需要映射,事实上像 SelectList
这样的东西几乎肯定不应该被映射,因为它们只与 View 模型相关,而不是模型。
因此,在您的 View 模型中只需执行以下操作:
public string Gender { get; set; }
public SelectList GenderChoices
{
get
{
return new SelectList(new List<SelectListItem>
{
new SelectListItem { Value = "M", Text = "Male" },
new SelectListItem { Value = "F", Text = "Female" }
}, "Value", "Text", Gender);
}
}
Gender
将被映射,但 GenderChoices
将仅存在于您的 View 模型中。
那么,在你看来:
@Html.DropDownListFor(m => m.Gender, Model.GenderChoices)
关于c# - Automapper - 将字符串属性转换为 SelectList?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16550222/
我正在使用 WatiN 进行一些网络测试,但遇到了选择列表的问题。 我必须先浏览几页,添加一个“类别”元素,该元素将填充所述麻烦的选择列表。 我已经能够使用 ByValue 从列表中轻松选择一个元素,
我是 javascript 的新手,目前正在研究 knockoutjs 库。这是我的问题。我有一个从可观察数组填充的选择列表。当我从选择列表中选择一个值并单击保存按钮时,我希望将该值保存在一个变量中,
我有这个选择列表: Please select a parent category New Store Extensions Remodel Bespoke Signage
我正在尝试在选择列表中设置多个值: SelectList List = new SelectList(MyListItems, "valField", "dataField", ); 我使用什么对象/
我的 View 中有一堆下拉列表,例如这个: @Html.DropDownListFor(model => model.Process, Model.ProcessList) 他们都接受一个Selec
我试图在 dropdownlist 文本中显示多个值。示例如下。 SelectList(Parts, "pno", "pcode"+"pname") 在哪里 pno 是零件编号。 pcode 是部分代
我目前在获取 SelectList 时遇到了一些问题默认为定义的初始值。我创建了一个片段来演示这个问题:https://dotnetfiddle.net/ozroT1 本质上,我希望我的 DropDo
在 MVC4 中: 我的模型中有以下用于下拉列表的属性: public SelectList Subjects { get; set; } 我在页面加载时在我的 Index() 操作中设置 Subje
这可能真的很简单...我正在尝试创建一个 SelectList,其中包含从当前年份开始到 2008 年的年份。情况总是如此。例如,在 2020 年,我的 SelectList 将包含 2020 - 2
我有以下操作方法: public JsonResult LoadSitesByCustomerName(string customername) { var customerlist = re
假设我有一个这样的枚举(仅作为示例): public enum Direction{ Horizontal = 0, Vertical = 1, Diagonal = 2 }
所以我在这个方法中生成了一个 SelectList : public static SelectList HolidayDays() { SelectList retval = Generat
我有一个 IDictionary,现在我想在选择列表中使用这些值。我该怎么做呢? 谢谢。 最佳答案 刚设置"Value"和 "Key"为 dataValueField和 dataTextField .
请帮忙使用 Ajax 填充 SelectList 和选项组吗? 我已正确编码添加项目,但不确定如何添加选项组。 这是我的有效 Ajax 代码: var category = $(this).val()
我在通过 QueryOver 选择时遇到一些问题,这是我的模型类: public class BaseModel { public virtual int Id { get; set; }
所以下面的代码为我提供了一个下拉框,其中包含来自司机的姓名列表,但它只是名字,我也有姓氏,我该怎么做。我的代码是... @Html.DropDownListFor(model => model.Dri
我刚刚开始在 MVC 项目中学习 AutoMapper。我有一个基本实体“Attendee”,其中包含一个性别字符串字段(可能值为“M”或“F”)。 我已经在 Attendee 和 AttendeeE
我正在努力创建一个包含下拉列表的 View 。为了生成选择列表项,我编写了一个方法来返回 SelectListItem 的列表。此下拉列表所需 - 其中一个具有 Selected 属性设置为 true
我有一个具有以下属性的类。它从现有列表构造一个 SelectList 对象,然后设置所选项目。 public SelectList ProviderTypeList { get {
我正在尝试为我的 Controller 中的下拉菜单设置选定值,并通过 ViewBag 将其传递到我的 View 。当我调试时,所有正确的值都被传递给 Controller 和 View ,但当它
我是一名优秀的程序员,十分优秀!