我的数据层中有一个枚举,我想在我的网站项目中使用它的下拉列表.我在数据层中的枚举是:
namespace SME.DAL.Entities.Enums
{
public enum EntityState
{
Open,
Freezed,
Canceled,
Completed,
Terminated,
ReadOnly
}
}
Run Code Online (Sandbox Code Playgroud)
如何制作其选择列表并在我的网站页面中使用它?我正在使用ASP.NET MVC 4.
如果你查看我之前的问题,你可能已经注意到我没有得到SelectList和Html.DropDown().我觉得这很吸引人,我似乎是唯一一个这样的人.所以也许我应该尝试改变我的心态,或者也许有些事我不知道会清除这一切.我真的很喜欢整个MVC框架,但SelectList并不想让我满意.所以这是我的清单:
的SelectList
Html.DropDownList()
在ppl建议我自己编写之前:
由于这将与MVC产品一起提供,我宁愿对基本控件进行正式支持,然后自行推出并拥有随之而来的所有麻烦.
我只是想知道人们在动作或视图中创建他们的SelectList的位置.
我已经看到了两者的例子,对我来说最有意义的是在动作中执行它并且视图模型具有SelectList类型的属性.
另一方面,我已经看到人们有视图模型具有SelectList属性的示例,并且ViewList在视图模型中填充(在构造函数中或通过延迟加载).我喜欢这个想法,因为这意味着我的行动中的代码更少......
总之,我只是想知道人们在做什么.
干杯安东尼
当您有一个需要显示为接口控件的域对象时,如下拉列表,ifwdev建议创建一个扩展方法来添加.ToSelectList().
原始对象是具有与下拉列表的.Text和.Value属性相同的属性的对象列表.基本上,它是SelectList对象的List,而不是同一个类名.
我想你可以使用反射将域对象转换为接口对象.任何人对C#代码都有任何建议吗?SelectList是SelectListItem的MVC下拉列表.
当然,想法是在视图中做这样的事情:
<%= Html.DropDownList("City",
(IEnumerable<SelectListItem>) ViewData["Cities"].ToSelectList() )
Run Code Online (Sandbox Code Playgroud) 我正在使用ASP.NET MVC 2(.NET 3.5),需要手动定义什么是选项列表.当我这样做时,我得到一个下拉菜单,每个手册条目读取'System.Web.Mvc.SelectListItem'.
我的视图模型定义了这样的列表:
public SelectList YesNoList
{
get
{
List<SelectListItem> tmpList = new List<SelectListItem>();
tmpList.Add(new SelectListItem {Text = "", Value = ""});
tmpList.Add(new SelectListItem {Text = "Yes", Value = "1"});
tmpList.Add(new SelectListItem {Text = "No", Value = "0"});
YesNoList = new SelectList(tmpList,"");
}
private set{}
}
Run Code Online (Sandbox Code Playgroud)
在视图中,我使用Html.DropDownList引用它:
Html.DropDownList("FieldName", viewmodel.YesNoList);
Run Code Online (Sandbox Code Playgroud)
我期望在最终网页上呈现的内容应该是:
<select id="FieldName" name="FieldName">
<option value=""/>
<option value="1">Yes</option>
<option value="0">No</option>
</select>
Run Code Online (Sandbox Code Playgroud)
相反,我得到:
<select id="FieldName" name="FieldName">
<option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
</select>
Run Code Online (Sandbox Code Playgroud)
我很茫然,因为我无法弄清楚为什么返回类型所以如果有人能指出我对viewmodel定义有什么问题,或者指出更好的方法,我会很感激.我对从C#类集合派生SelectList犹豫不决,因为SelectList将提供迭代遍历值和显示文本的一致方式.
在此先感谢,希望有人可以提供帮助.
干杯,
Ĵ
我怎么能在它创建一个清单,在过去5年,如几年2011来2007.我不想硬编码这些年,但我希望最近的5年基于当年.
我有以下挑战.
我有一个参赛表格,人们可以添加新的参赛作品,一旦获得批准,他们也可以编辑.挑战在于根据选择隐藏特定字段.当用户添加新条目时,他们必须选择特定类别.基于此,一些字段被隐藏.
这是我到目前为止使用的代码:
<select name="entry.parent" size="1" style="width: 360px;" id="SPCatChooserSl" class="required">
<option value="">Selecteer categorie</option>
<option selected="selected" value="55">- Option 1</option>
<option value="59">- Option 2</option>
</select>
<div id="option1">
<p>Hier comes option 1</p>
</div>
<div id="option2">
<p>Here comes option 2</p>
</div>
<script>
jQuery(function() {
jQuery('#option1').hide();
jQuery('#option2').hide();
});
jQuery(function() {
jQuery("#SPCatChooserSl").change(function() {
if (this.value == '55') {
jQuery('#option1').show();
} else {
jQuery('#option1').hide();
}
if (this.value == '59') {
jQuery('#option2').show();
} else {
jQuery('#option2').hide();
}
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
这在用户仍然必须选择类别时有效.它根据选择隐藏字段.
但是,当用户编辑条目时,该类别已被选中,可能不会更改.因此,DIVS option1和Option2被隐藏,并且由于用户没有选择类别,因此div将永远不可见.
所以问题是:如何检查选择列表中的特定值,显示正确的字段而不使用.
我希望我的问题/挑战是明确的:)
提前致谢!!!!!!!
我目前正在处理Grails应用程序,我正在寻找页面上的选择列表,并将其Key设置为一个值,将Value设置为另一个值.所有相关元素的代码如下:
域对象:
class Cars {
String carType
String car
}
Run Code Online (Sandbox Code Playgroud)
控制器:
def create() {
List cars = Cars.list()
[dealerInstance: new Dealer(params), cars: cars]
render(text:"This site in curently under Maintainence!")
}
Run Code Online (Sandbox Code Playgroud)
视图:
<g:select name="cars.id" from="${cars}" optionKey="${carType}" optionValue="${car}"/>
Run Code Online (Sandbox Code Playgroud)
现在,当我运行此代码时,列表确实已填充,但数据如下所示:
<select id="cars.id" name="cars.id">
<option value="com.app.Cars : 1">com.app.Cars : 1</option>
<option value="com.app.Cars : 2">com.app.Cars : 2</option>
<option value="com.app.Cars : 3">com.app.Cars : 3</option>
</select>
Run Code Online (Sandbox Code Playgroud)
然后当我尝试这个:
视图:
<g:select name="cars.id" from="${cars.car}" optionKey="${carType}" optionValue="${car}"/>
Run Code Online (Sandbox Code Playgroud)
我得到以下内容:
<select id="cars.id" name="cars.id">
<option value="Audi">Audi</option>
<option value="BMW">BMW</option>
<option value="Scoda">Scoda</option>
</select>
Run Code Online (Sandbox Code Playgroud)
这不是我想要的,我希望能够在此选择列表上设置不同的键值对,以便我可以在我的应用程序中使用该数据,我希望生成以下内容:
<select id="cars.id" …Run Code Online (Sandbox Code Playgroud) 我在脚本中初始化了一个数组
var listarray = new Array();
Run Code Online (Sandbox Code Playgroud)
并有一个动态创建的选择列表---
<select multiple size=6 width=150 style="width:150px" name="ToLB" >
</select>
Run Code Online (Sandbox Code Playgroud)
我的问题是如何将选择列表的所有值分配给数组.提前致谢.
使用angular我想创建一个选择列表,其值带有我选择的id(对象的实际id属性),我想用ng-model指令正确绑定它.
这是我尝试过的:
<select ng-model="selectedPersonId"
ng-options="p.id as p.name for p in People track by p.id"></select>
$scope.People = [
{ name : "Fred", id : 1 },
{ name : "Joe", id : 2 },
{ name : "Sandra", id : 3 },
{ name : "Kacey", id : 4 },
{ name : "Bart", id : 5 }
];
$scope.setTo1 = function(){
$scope.selectedPersonId = 1;
}
Run Code Online (Sandbox Code Playgroud)
这里选择选项值是正确的值(值是人的人的id),文本是正确的.但绑定不起作用,所以如果我设置$ scope.selectedPersonId的值,选择不会反映在列表中.
我知道我可以让它像这样工作:
<select ng-model="selectedPersonId"
ng-options="p.id as p.name for p in People"></select>
Run Code Online (Sandbox Code Playgroud)
它工作我可以设置$ …
selectlist ×10
asp.net-mvc ×4
c# ×2
javascript ×2
angularjs ×1
arrays ×1
asp.net ×1
automapper ×1
enums ×1
grails ×1
html ×1
jquery ×1
key ×1
key-value ×1
mvvm ×1
viewmodel ×1