标签: selectlist

将SelectList"SelectedValue"传递给Controller Action Method

我有一个注册表单,显示用户名称(文本框),电子邮件(文本框)和分区(选择列表).名称和电子邮件已预先填充(我正在使用Windows身份验证,Intranet应用程序),我想将DropDown中的SelectedValue作为Int32发送到我的控制器,我不想再发送整个SelectList.这个清单现在很小,但会增长到相当大的规模.

我是一个名为的类RegistrationViewModel,它包含这些字段的公共属性.但是,当我SelectList用于DivisionList时,我收到此错误:No parameterless constructor defined for this object..

如果我更改Type,它没有问题,但是Division是null或0.有没有办法将SelectedValue从DropDown传递给Controller Action作为Int32?

编辑1:

我不确定我在做什么,我一直在使用MVC大约48小时,看过PDF,TechEd和TechDays视频.

道歉,这是我的控制器代码:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Register(RegistrationViewModel rvm)
{
    IApplicationContext context = ContextRegistry.GetContext();
    IValidationErrors errors = new ValidationErrors();

    IValidator validator = (IValidator)context.GetObject("RegistrationValidator");
    bool valid = validator.Validate(rvm, errors);

    if (valid)
        repo.SaveRegistration();
    else
        ViewData["DivisionList"] = repo.GetDivisions();

    return View(rvm);
}
Run Code Online (Sandbox Code Playgroud)

RegistrationViewModel

public class RegistrationViewModel
{
    public string Name { get; set; }
    public string Email { get; set; }
    //public SelectList DivisionList { get; private set; …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc selectlist

2
推荐指数
1
解决办法
8889
查看次数

创建2级相互依赖的选择列表

我浏览了StackOverflow并发现了几个问题/答案,但是我的情况并不准确.我跟着这个例子:

http://www.javascriptkit.com/javatutors/selectcontent2.shtml

我的JavaScript代码是这样的:

var cityList = document.selectionForm.cityListBox;
var cities = new Array();

cities[0] = "";
cities[1] = ["Eugene|eugeneValue", "Portland|portlandValue", "Salem|salemValue"];
cities[2] = ["Bellingham|bellinghamValue", "Onalaska|onalaskaValue", "Seattle|    seattleValue"];

function updateCities(cityGroup) 
{
    cityList.options.length = 0;

    if (cityGroup > 0)
    {
        for (i = 0; i < cities[cityGroup].length; i++)
        {
            cityList.options[cityList.options.length] = new Option(cities[cityGroup][i].split("|")[0], cities[cityGroup][i].split("|")[1]);
        }   
    }
}
Run Code Online (Sandbox Code Playgroud)

我的HTML代码如下:

<form name="selectionForm">
    <select name="stateListBox" size="3" style="width: 150px" onchange="updateCities(this.selectedIndex);">
        <option selected>Select a State >></option>
        <option value="oregon">Oregon</option>
        <option value="washington">Washington</option>
    </select>

    <select name="cityListBox" size="3" style="width: 150px" onclick="alert(this.options[this.options.selectedIndex].value);">
    </select> …
Run Code Online (Sandbox Code Playgroud)

html javascript selectlist

2
推荐指数
1
解决办法
2832
查看次数

ASP.Net MVC SelectList不是'选择'正确的项目

我被要求查看一些ASP.Net MVC代码中的错误,并且(对我来说)SelectList有一个非常奇怪的问题.

来自控制器的代码生成项(返回SelectList的方法,总共有5个).然后将每个SelectList保存到ViewData集合中.

List<SelectListItem> items = new List<SelectListItem>();
string yesText = "Yes";
string noText = "No";
if (ci.LCID.Equals((int)LanguageCodes.FRANCE))
{
    yesText = "Oui";
    noText = "Non";
}

SelectListItem yesItem = new SelectListItem();
yesItem.Text = yesText;
yesItem.Value = ((int)MarketingBy.Yes).ToString();
yesItem.Selected = selectedValue != null && selectedValue.Equals(int.Parse(yesItem.Value));

SelectListItem noItem = new SelectListItem();
noItem.Text = noText;
noItem.Value = ((int)MarketingBy.No).ToString();
noItem.Selected = selectedValue != null && selectedValue.Equals(int.Parse(noItem.Value));

items.Add(yesItem);
items.Add(noItem);

return new SelectList(items, "Value", "Text", yesItem.Selected ? yesItem.Value : noItem.Value);
Run Code Online (Sandbox Code Playgroud)

在创建点快速"快速观察"表明一切正常: 选择列表生成http://i52.tinypic.com/x3hd3r.png

在渲染视图时,值仍然可以正常显示.但是,加载视图时,始终会选择列表中的第一个项目.生成的HTML是:

<tr> …
Run Code Online (Sandbox Code Playgroud)

html selectlist asp.net-mvc-2

2
推荐指数
1
解决办法
2879
查看次数

从多个字段填充选择列表

我的问题非常简单.假设我有一个用户下拉列表.在数据库中,我的用户表有3个字段:

 user_id
 user_name
 user_firstname
Run Code Online (Sandbox Code Playgroud)

在我的MVC应用程序中,我想将这些用户链接到项目.这就是为什么我想要下拉列表.

现在,我希望有一个选择列表,ID为值,firstname和lastname为'text'

  SelectList sl = new SelectList(users, "user_id", "user_name");
Run Code Online (Sandbox Code Playgroud)

现在我如何在文本中获得名字?这应该相当容易,但似乎不是......

asp.net-mvc selectlist linq-to-sql

1
推荐指数
1
解决办法
6056
查看次数

在Html Helper中使用分隔符创建选择列表

我正在尝试构建一个包含一些优先级值的选择列表,然后是一个分隔符,然后是其余的值.我需要在Html Helper中执行此操作,因为我将获得优先级的值以及来自不同源的其余值.

我想要完成的样本:

EUR
GBP
USD
---
SEK
ZAR
.
.
.
Run Code Online (Sandbox Code Playgroud)

我还想确保无法选择分隔符.如果我直接在html中执行此操作,我已设法执行此操作,但在通过帮助程序执行此操作时,我无法禁用分隔符.任何想法如何做到这一点?

c# asp.net-mvc html-helper selectlist

1
推荐指数
1
解决办法
2374
查看次数

MVC SelectList vs MultiSelectList

在MVC中,SelectList派生自MultiSelectList.我不能说出他们之间的区别.对于两者,我必须告诉它选择多个项目(我希望不必这样做,因为名称中有"multi").

如果在下面的代码中用"MultiSelectList"替换"SelectList",它将生成相同的HTML:

<% 
var leftSelectList = new SelectList(Model.LeftSide,"Key","Value");
var attrs = new SortedDictionary<string, object> {{"class", "ui-widget"}};
MvcHtmlString disabledStyle = MvcHtmlString.Create(Html.Encode("'width:50px;'"));
attrs.Add("style", disabledStyle);
attrs.Add("multiple", "multiple");
attrs.Add("size", "5"); /*-- how many items to show--*/        
var leftItems =  Html.DropDownList("ddlLeftItems", leftSelectList, attrs); %>

<%= leftItems.ToHtmlString()%>
Run Code Online (Sandbox Code Playgroud)

生成的HTML是:

<select class="ui-widget" id="ddlLeftItems" multiple="multiple" name="ddlLeftItems" size="5" style="&amp;#39;width:50px;&amp;#39;">
  <option value="1">A</option>
  <option value="2">B</option>
  <option value="3">C</option>
  <option value="5">E</option>
  <option value="9">I</option>
</select>
Run Code Online (Sandbox Code Playgroud)

那么,我应该使用哪一个?谢谢.

selectlist multi-select mvchtmlstring asp.net-mvc-2

1
推荐指数
1
解决办法
3499
查看次数

使用MVC中的自定义方法填充@ Html.DropDownListFor()

好的,这是我的问题.我试图填充@Html.DropDownListFor()我的角色减去Admin角色.这很好用,但它显示了所有角色:

@Html.DropDownListFor(m => m.RoleName, new SelectList(Roles.GetAllRoles()))
Run Code Online (Sandbox Code Playgroud)

然而,这显示了所有角色,包括Adminroll.

所以我UserHelper.cs用这个方法创建了另一个类,基本上是这样的Roles.GetAllRoles():

public string[] GetUserRoles()
    {
        string[] userroles = null;
        using (MainVeinDataDataContext conn = new MainVeinDataDataContext())
        {
            userroles = (from r in conn.Roles
                         where r.Rolename != "Admin"
                         select r.Rolename).ToArray();
        }
        return userroles;
    }
Run Code Online (Sandbox Code Playgroud)

但是,作为MVC的新手,我不知道如何将此方法公开给视图中的DropDownList.所以无论我尝试什么,这都行不通:

@Html.DropDownListFor(m => m.RoleName, new SelectList(GetUserRoles()))
Run Code Online (Sandbox Code Playgroud)

我不确定我错过了什么,这让我发疯.希望那里有人知道我错过了什么.

selectlist roleprovider html.dropdownlistfor asp.net-mvc-3

1
推荐指数
1
解决办法
5999
查看次数

MVC 5 - MultiSelectList,使用Model"SelectList"属性绑定值

在我的MVC项目中,我遇到了将MultiSelectLists与我的Model属性绑定的问题.虽然我可以通过FormCollection对象获取值,但这些只是Selected ID.

以下是我的模型类,代表一个帖子.

public class PostModel
{
    [Required(ErrorMessage = "Id is a required field")]
    public int Id { get; set; }

    [Required(ErrorMessage = "Post Title is required")]
    [StringLength(500)]
    public string Title { get; set; }

    .......

    public SelectList UnassignedTags { get; set; }
    public SelectList AssignedTags { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

请注意,这只是一个Model类,并且有两个附加属性(UnassignedTags和AssignedTags),仅用于在屏幕上显示它们以及保持调用之间的值绑定.

单个帖子可以标记多个标签.在我的视图中,我想要两个多选列表.一个用于保存未分配的标签(文本和值),另一个用于保存已分配的标签(文本和值).

在我的视图中,我使用以下代码显示这些列表的多选列表.

@Html.ListBox("UnassignedTagss", Model.UnassignedTags, new { @class = "form-control" })

@Html.ListBox("AssignedTagss", Model.AssignedTags, new { @class = "form-control" })
Run Code Online (Sandbox Code Playgroud)

当我在屏幕上加载记录时,一切都很好.

加载后,我让用户通过javascript在列表之间移动项目.

当Form返回版本时会出现问题.我无法将Listbox值与我的模型属性绑定.

以下是我显示/编辑帖子记录的操作方法.

public ActionResult PostDtls(int postId)
{
    ….. …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc model model-binding selectlist

1
推荐指数
1
解决办法
1万
查看次数

使用其他选择列表中的选项填充选择列表的最快方法

我有一个选择的选项列表.我想立即让另一个选择列表包含相同的选项.

$('#list1 option').appendTo('#list2');
Run Code Online (Sandbox Code Playgroud)

上面的想法是正确的,但由于某种原因,它删除了我不想做的原始列表中的所有选项!有人能帮忙吗?谢谢

javascript jquery selectlist

0
推荐指数
1
解决办法
426
查看次数

重置SELECT列表在Firefox中不起作用

我使用以下代码重置IE中选择列表的选定索引:

$("#list")[0].selectedIndex = -1
Run Code Online (Sandbox Code Playgroud)

但是,这似乎不适用于FF和Chrome.任何人都可以告诉我实现这一目标的正确方法是什么?

javascript firefox jquery selectlist

0
推荐指数
1
解决办法
628
查看次数

具有布尔值而不是字符串的SelectListItem

无法将SelectListItem.Value属性从转换stringBoolean。如何创建一个简单的是/与价值无选项true/ false

private List<SelectListItem> getYNOptions()
        {
            List<SelectListItem> yn = new List<SelectListItem>();
            yn.Add(new SelectListItem() { 
                Text = "Yes",
                Value=true, // error
                Selected = false
            });
            yn.Add(new SelectListItem()
            {
                Text= "No",
                Value = false, // error
                Selected = false
            });
            return yn;
        } 

public ActionResult Index(){
    ViewBag.selectList = getYNOptions();
    return View();
}
Run Code Online (Sandbox Code Playgroud)

视图

 @Html.DropDownListFor(model => model.YesOrNo, new SelectList(ViewBag.selectList,"Value","Text"), "-- Select --")
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc selectlist selectlistitem html.dropdownlistfor

0
推荐指数
1
解决办法
3612
查看次数

连接选择列表中的两个字段 (C#)

我使用 viewbag 创建一个选择列表,我想显示连接在一起的两个字段。然而,它在我看来是崩溃的。这是查看包代码:

ViewBag.PackageId = new SelectList(db.Packages.Where(p => p.status == "A"), "u_package_id", "u_package_id" + "'-'" + "package_nme");
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc selectlist viewbag

-3
推荐指数
1
解决办法
4482
查看次数