1

私は asp.net mvc 2.0 の初心者です。この記事について検索しようとしましたが、必要な回答が得られません。

各従業員にロールを割り当てるフォームが 1 つあります。そこで、従業員の名前を入力し、その役割を選択できる 1 つのフォームを作成します。役割はテーブル Role から取得します。linq to sql を使用して、テーブル Role から RoleName と RoleID をクエリし、ビューで DropDownListFor にバインドしたいと考えています。

私は1つのモデルを持っています:

public class UserModels
{

   public string name { get; set; }
   public string role { get; set; }

}

これは私がコントローラーで行ったことです:

[HttpPost]
public ActionResult UserMaintenance(FormCollection frm)
{
if (ModelState.IsValid)
{
    EMP_DBSEntities context = new EMP_DBSEntities();
    tblUserLogin user = new tblUserLogin();
    user.UserName = frm["userLogin"].ToString();

    IEnumerable<SelectListItem> role_list = context.tblRoles.Select(d => new SelectListItem
    {
        Value = d.RoleID.ToString(),
        Text = d.RoleName
    });


    context.AddTotblUserLogins(user);
    context.SaveChanges();
    return View();
}
else
{
    return View();
}
}

role_listビューで DropDownListFor<> にバインドする方法を教えてください。

ありがとう。

4

1 に答える 1

1

ドロップダウン リストを作成するには、2 つのプロパティを持つビュー モデルが必要です。選択した値を含むスカラー プロパティと、使用可能なオプションを含むコレクション プロパティです。

ASP.NET MVC ではいつものように、ビュー モデルを作成することから始めます。

public class UserRoleViewModel
{
    [DisplayName("name")]
    public string EmployeeName { get; set; }

    [DisplayName("role")]
    public int? SelectedRoleId { get; set; }

    public IEnumerable<SelectListItem> Roles { get; set; }
}

次にコントローラー:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        // fetch the roles
        // could come from a database or something
        var roles = new[] 
        { 
            new { RoleID = 1, RoleName = "Admin" }, 
            new { RoleID = 2, RoleName = "Foo" },
            new { RoleID = 3, RoleName = "Bar" },
            new { RoleID = 4, RoleName = "Baz" }, 
        };

        // Now we build the model
        var model = new UserRoleViewModel
        {
            EmployeeName = "John", // could come from a database or something
            SelectedRoleId = 1, // could come from a database or something
            Roles = new SelectList(roles, "RoleID", "RoleName")
        };

        return View(model);
    }

    [HttpPost]
    public ActionResult Index(UserRoleViewModel model)
    {
        return Content(
            string.Format(
                "Selected role for {0} is {1}", model.EmployeeName, model.SelectedRoleId
            )
        );
    }
}

そして最後にビュー:

<%@ Page 
    Language="C#" 
    MasterPageFile="~/Views/Shared/Site.Master" 
    Inherits="System.Web.Mvc.ViewPage<UserRoleViewModel>" 
%>

...

<% using (Html.BeginForm()) { %>
    <%= Html.EditorFor(x => x.EmployeeName) %>
    <%= Html.DropDownListFor(x => x.SelectedRoleId, Model.Roles, "-- Role --") %>
    <button type="submit">OK</button>
<% } %>
于 2012-07-06T12:16:36.903 に答える