>백엔드 개발 >C++ >MVC의 목록에서 Razor DropdownList를 채우는 방법은 무엇입니까?

MVC의 목록에서 Razor DropdownList를 채우는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-05 04:37:43754검색

How to Populate a Razor DropdownList from a List in MVC?

List에서 Razor 드롭다운 목록 채우기 MVC에서

List의 데이터로 드롭다운 목록을 채우려면 MVC에서는 뷰 모델을 활용하고 데이터를 드롭다운 목록 요구 사항에 맞는 형식으로 변환할 수 있습니다.

뷰 모델 생성

필요한 속성이 있는 뷰 모델 생성 선택한 값에 대한 속성 및 표시할 항목 목록과 같은 드롭다운 목록을 구동합니다. 이 경우 UserRoleViewModel이라고 하겠습니다.

DropDownList 데이터 준비

컨트롤러 내에서 드롭다운 목록에 대한 데이터를 검색하는 메서드를 구성합니다. 이 방법에서는 List의 데이터를 변환할 수 있습니다. SelectListItem 개체로. SelectListItem 클래스는 항목의 값과 텍스트 표현 모두에 필요한 속성을 제공하고 SelectList 클래스는 드롭다운 목록 데이터에 대한 계층 구조를 제공합니다.

뷰에서 Viewmodel 사용

보기에서 @model 지시문을 활용하여 UserRoleViewModel에 액세스합니다. 그런 다음 Razor 도우미 LabelFor 및 DropDownListFor를 사용하여 드롭다운 목록과 해당 레이블을 렌더링합니다. DropDownListFor 도우미는 viewmodel에 정의된 UserRoles 컬렉션으로 드롭다운 목록을 자동으로 채웁니다.

구현 예

다음은 viewmodel, 컨트롤러 및 보기:

ViewModel:

public class UserRoleViewModel
{
    public int SelectedUserRoleId { get; set; }
    public IEnumerable<SelectListItem> UserRoles { get; set; }
}

컨트롤러:

public IEnumerable<SelectListItem> GetRoles()
{
    var dbUserRoles = new DbUserRoles();
    var roles = dbUserRoles
                .GetRoles()
                .Select(x =>
                        new SelectListItem
                        {
                            Value = x.UserRoleId.ToString(),
                            Text = x.UserRole
                        });

    return new SelectList(roles, "Value", "Text");
}

public ActionResult AddNewUser()
{
    var model = new UserRoleViewModel
                    {
                        UserRoles = GetRoles()
                    };
    return View(model);
}

보기:

@model UserRoleViewModel

@Html.LabelFor(m => m.SelectedUserRoleId)
@Html.DropDownListFor(m => m.SelectedUserRoleId, Model.UserRoles)

이러한 접근 방식을 따르면, List의 데이터로 드롭다운 목록을 효과적으로 채울 수 있습니다. MVC에서는 값 선택을 위한 깔끔하고 직관적인 사용자 인터페이스를 제공합니다.

위 내용은 MVC의 목록에서 Razor DropdownList를 채우는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.