2017-12-13 45 views
1

목표는 특정 선택 값으로 <select> 드롭 다운을 생성하는 것입니다 (<option>) 미리 선택한 확정 HTML은 다음과 같이해야하므로, : 2의 값으로 옵션을 가지고.NET 코어 <select> 기본값이 있습니까?

<select> 
    <option value = "1">Option1</option> 
    <option value = "2" selected>Option2</option> 
    <option value = "3">Option3</option> 
</select> 

selected 속성은 드롭 다운이 클릭되기 전에 표시됨을 나타냅니다. .NET Core Tag Helpers를 사용하여이 작업을 수행 할 수는 없습니다. 거기 Form 객체가 단지에 IdName 특성을 가지고

public class ReportViewModel 
{ 
    [Display(Name = "Pick a form")] 
    public IEnumerable<Form> AvailableForms { get; set; } 

    public Form SelectedForm { get; set; } 

    public List<ReportData> FormResponses { get; set; } 
} 

참고 :

내 모델 (난 당신이 안전하게 세부 사항을 무시할 수 있다고 생각)입니다.

이 내 선택 성명 :

<label asp-for="SelectedForm.Name" class="form-control-label font-weight-bold"></label> 
<select asp-for="SelectedForm.Name" 
     class="form-control" 
     onchange ="onFormSelected(this.value)" 
     asp-items="@(new SelectList(Model.AvailableForms, "Id", "Name"))"> 
</select> 

내가 blog on the topic

+0

기본 "비어있는"상태인지 또는 선택한 값 (예 : 이미 선택한 사용자 환경 설정)을 표시하려고합니까? – James

+0

@James 사용자가 다른 페이지에서 양식을 선택합니다. 위의 (마크 업과 함께)이 페이지가로드됩니다. 원하는 경우 보고서의 다른 양식을 선택할 수 있도록하기위한 것입니다. 즉, 뷰가로드되기 전에 컨트롤러에 "기본"폼의 ID가 있습니다. – VSO

+0

'asp-for' 값은 처음 선택되는 값을 결정합니다. – CalC

답변

1

은 기본적으로 당신이 SelectedForm.Id 속성을 사용하는 선택을 설정해야 할 a를 Microsoft Guide 에서 또는에서 답을 볼 수 없습니다, 그런 다음 컨트롤러에서 선택할 양식의 값을 지정하십시오. 난 당신의 코드를 약간 업데이트했다 그러나 이것은 나를 위해 작동 - 추가 인수, 즉 selectedValue 걸릴 수 있습니다 컨트롤러

var vm = new ReportViewModel() 
{ 
    AvailableForms = new List<Form>() 
}; 

var form2 = new Form() { Id = 2, Name = "Bar" }; 
(vm.AvailableForms as List<Form>).Add(new Form() { Id = 1, Name = "Foo" }); 
(vm.AvailableForms as List<Form>).Add(form2); 
(vm.AvailableForms as List<Form>).Add(new Form() { Id = 3, Name = "Baz" }); 

vm.SelectedForm = form2; 

return View(vm); 
+0

감사합니다. – VSO

1

SelectList 생성자에서 다음

<label asp-for="SelectedForm" class="form-control-label font-weight-bold"></label> 
<select asp-for="SelectedForm.Id" 
     class="form-control" 
     onchange ="onFormSelected(this.value)" 
     asp-items="@(new SelectList(Model.AvailableForms, "Id", "Name"))"> 
</select> 

합니다. asp-for 당신을 위해 작동하지 않는 이유는 SelectedForm.Name의 값 사이의 불일치가

asp-items="@(new SelectList(Model.AvailableForms, "Id", "Name", Model.SelectedForm.Id))" 

내가 생각입니다 : 귀하의 경우에는, 당신은 내가이 같을 것이라고 생각 하는 통해이 통과 할 수 있어야한다 (문자열) 및 SelectList 생성자에서 사용중인 Id 속성의 값 (정수)을 반환합니다.

소스 코드에서 이것이 어떻게 작동하는지 부분적으로 볼 수 있습니다. 당신은 GenerateOptionhere을 결국 :

이 시점에서
var selected = item.Selected; 
if (currentValues != null) 
{ 
    var value = item.Value ?? item.Text; 
    selected = currentValues.Contains(value); 
} 

, 내가 currentValues 문자열 (Form.Name)입니다 단일 요소를 포함 할 것으로 판단된다. item.Value은 (는) 예 : "1"와 일치하지 않습니다.