Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.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
Asp.net mvc 我有一个用户列表,如何将其更改为下拉列表(在MVC中使用Razor)?_Asp.net Mvc_Asp.net Mvc 3_Razor_Drop Down Menu - Fatal编程技术网

Asp.net mvc 我有一个用户列表,如何将其更改为下拉列表(在MVC中使用Razor)?

Asp.net mvc 我有一个用户列表,如何将其更改为下拉列表(在MVC中使用Razor)?,asp.net-mvc,asp.net-mvc-3,razor,drop-down-menu,Asp.net Mvc,Asp.net Mvc 3,Razor,Drop Down Menu,我正在使用以下代码获取我的用户列表: 以下是我的看法: @model System.Web.Security.MembershipUserCollection @{ ViewBag.Title = "ManageProfile"; } <div class ="hero-unit"> <h2>ManageProfile</h2> <ul> @foreach (MembershipUser user in Model)

我正在使用以下代码获取我的用户列表:

以下是我的看法:

@model System.Web.Security.MembershipUserCollection

@{
    ViewBag.Title = "ManageProfile";
}
<div class ="hero-unit">
<h2>ManageProfile</h2>

<ul>
       @foreach (MembershipUser user in Model)
       {<li>@user.UserName</li>}

</ul>
</div>

我希望能够从下拉列表中选择用户。如何修改代码以生成下拉列表?(我的目标是能够从下拉列表中选择用户,并更改该用户个人资料的详细信息)

您可以在下面的帖子中查看我的答案

我已经给出了一个示例,如何使用IEnumerable作为模型属性,并在控制器中赋值,在视图中使用(视图使用Aspx视图引擎),以便进行以下尝试

@Html.DropDownListFor(m=>m.SelectedCountry,Model.countriesList)
@Html.DropDownListFor(m=>m.SelectedState,Model.stateList)

你可以在下面的帖子里看看我的答案

我已经给出了一个示例,如何使用IEnumerable作为模型属性,并在控制器中赋值,在视图中使用(视图使用Aspx视图引擎),以便进行以下尝试

@Html.DropDownListFor(m=>m.SelectedCountry,Model.countriesList)
@Html.DropDownListFor(m=>m.SelectedState,Model.stateList)

动作方法

public ActionResult ManageProfile()
{
    List<SelectListItem> userNames = new List<SelectListItem>();
    var users = Membership.GetAllUsers();

    foreach (MembershipUser user in users)
        userNames.Add(new SelectListItem() { Text = user.UserName, Value = user.UserName);

    return View(userNames);
}
@model List<SelectListItem>

@{
    ViewBag.Title = "ManageProfile";
}
<div class ="hero-unit">
<h2>ManageProfile</h2>

@Html.DropDownList("SelectedUser", Model)

</div>
public ActionResult ManageProfile()
{
列表用户名=新列表();
var users=Membership.GetAllUsers();
foreach(用户中的成员身份用户)
添加(新建SelectListItem(){Text=user.UserName,Value=user.UserName);
返回视图(用户名);
}
查看

public ActionResult ManageProfile()
{
    List<SelectListItem> userNames = new List<SelectListItem>();
    var users = Membership.GetAllUsers();

    foreach (MembershipUser user in users)
        userNames.Add(new SelectListItem() { Text = user.UserName, Value = user.UserName);

    return View(userNames);
}
@model List<SelectListItem>

@{
    ViewBag.Title = "ManageProfile";
}
<div class ="hero-unit">
<h2>ManageProfile</h2>

@Html.DropDownList("SelectedUser", Model)

</div>
@型号列表
@{
ViewBag.Title=“ManageProfile”;
}
管理配置文件
@Html.DropDownList(“SelectedUser”,Model)

这是一种简单、不可缩放的方式,展示了如何使用
DropDownList()
(您也可以使用
DropDownListFor()
).但是我建议构造某种类型的ViewModel来包含此数据,然后您将使用带有ViewModel的强类型视图作为
@model

操作方法

public ActionResult ManageProfile()
{
    List<SelectListItem> userNames = new List<SelectListItem>();
    var users = Membership.GetAllUsers();

    foreach (MembershipUser user in users)
        userNames.Add(new SelectListItem() { Text = user.UserName, Value = user.UserName);

    return View(userNames);
}
@model List<SelectListItem>

@{
    ViewBag.Title = "ManageProfile";
}
<div class ="hero-unit">
<h2>ManageProfile</h2>

@Html.DropDownList("SelectedUser", Model)

</div>
public ActionResult ManageProfile()
{
列表用户名=新列表();
var users=Membership.GetAllUsers();
foreach(用户中的成员身份用户)
添加(新建SelectListItem(){Text=user.UserName,Value=user.UserName);
返回视图(用户名);
}
查看

public ActionResult ManageProfile()
{
    List<SelectListItem> userNames = new List<SelectListItem>();
    var users = Membership.GetAllUsers();

    foreach (MembershipUser user in users)
        userNames.Add(new SelectListItem() { Text = user.UserName, Value = user.UserName);

    return View(userNames);
}
@model List<SelectListItem>

@{
    ViewBag.Title = "ManageProfile";
}
<div class ="hero-unit">
<h2>ManageProfile</h2>

@Html.DropDownList("SelectedUser", Model)

</div>
@型号列表
@{
ViewBag.Title=“ManageProfile”;
}
管理配置文件
@Html.DropDownList(“SelectedUser”,Model)

这是一种简单、不可缩放的方式,展示了如何使用
DropDownList()
(您也可以使用
DropDownListFor()
)。但是我建议构建某种类型的ViewModel来包含这些数据,然后您可以使用一个强类型视图,将ViewModel作为
@model

,就像在ASP.NET MVC应用程序中一样,您可以从设计满足视图要求的视图模型开始(根据您在问题中描述的内容,显示了一个包含所有用户的下拉列表):

公共类MyViewModel
{
[显示(Name=“选择用户”)]
公共字符串SelectedUser{get;set;}
公共IEnumerable用户{get;set;}
}
然后编写一个控制器,该控制器将查询存储库并构造一个将传递给视图的视图模型:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var users = Membership.GetAllUsers();
        var model = new MyViewModel
        {
            Users = users.OfType<MembershipUser>().Select(x => new SelectListItem
            {
                Value = x.UserName,
                Text = x.UserName
            })
        };
        return View(model);
    }

    [HttpPost]
    public ActionResult Index(string selectedUser)
    {
        return Content("Thank you for selecting " + selectedUser);
    }
}
公共类HomeController:控制器
{
公共行动结果索引()
{
var users=Membership.GetAllUsers();
var模型=新的MyViewModel
{
Users=Users.OfType().Select(x=>newselectListItem
{
Value=x.UserName,
Text=x.UserName
})
};
返回视图(模型);
}
[HttpPost]
公共操作结果索引(字符串selectedUser)
{
返回内容(“感谢您选择”+selectedUser);
}
}
最后,编写一个相应的视图:

@model MyViewModel
@using (Html.BeginForm())
{
    @Html.LabelFor(x => x.SelectedUser)
    @Html.DropDownListFor(x => x.SelectedUser, Model.Users)
    <button type="submit">OK</button>
}
@model MyViewModel
@使用(Html.BeginForm())
{
@LabelFor(x=>x.SelectedUser)
@Html.DropDownListFor(x=>x.SelectedUser,Model.Users)
好啊
}

与往常一样,在ASP.NET MVC应用程序中,您可以从设计满足视图要求的视图模型开始(您在问题中描述的视图模型是显示所有用户的下拉列表):

公共类MyViewModel
{
[显示(Name=“选择用户”)]
公共字符串SelectedUser{get;set;}
公共IEnumerable用户{get;set;}
}
然后编写一个控制器,该控制器将查询存储库并构造一个将传递给视图的视图模型:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var users = Membership.GetAllUsers();
        var model = new MyViewModel
        {
            Users = users.OfType<MembershipUser>().Select(x => new SelectListItem
            {
                Value = x.UserName,
                Text = x.UserName
            })
        };
        return View(model);
    }

    [HttpPost]
    public ActionResult Index(string selectedUser)
    {
        return Content("Thank you for selecting " + selectedUser);
    }
}
公共类HomeController:控制器
{
公共行动结果索引()
{
var users=Membership.GetAllUsers();
var模型=新的MyViewModel
{
Users=Users.OfType().Select(x=>newselectListItem
{
Value=x.UserName,
Text=x.UserName
})
};
返回视图(模型);
}
[HttpPost]
公共操作结果索引(字符串selectedUser)
{
返回内容(“感谢您选择”+selectedUser);
}
}
最后,编写一个相应的视图:

@model MyViewModel
@using (Html.BeginForm())
{
    @Html.LabelFor(x => x.SelectedUser)
    @Html.DropDownListFor(x => x.SelectedUser, Model.Users)
    <button type="submit">OK</button>
}
@model MyViewModel
@使用(Html.BeginForm())
{
@LabelFor(x=>x.SelectedUser)
@Html.DropDownListFor(x=>x.SelectedUser,Model.Users)
好啊
}

我不明白省略号所在的位置会是什么。我不明白省略号所在的位置会是什么。@moguzalp,就我个人而言,视图模型总是实用的。即使是在小项目中。当然,这取决于你对小项目的定义。@moguzalp我不同意这一点。视图模型可以减轻维护并最大化缩放能力。这是我所需要的一个非常干净的解决方案。谢谢你简洁的回答和详细的解释,实际上(无意中)教给我一些非常具体和有用的东西,对我的项目的另一部分也是如此。@moguzalp,对我个人来说,视图模型总是实用的。即使在小项目中。当然,这取决于你对小项目的定义。@moguzalp我不同意。视图模型减轻了维护并最大化了可扩展性。这是一个非常干净的解决方案谢谢你简洁的回答和详细的解释,