2016-01-02 53 views

回答

25

對於包含單選按鈕類型的所有輸入類型,還有一個TagHelper。假設你有一個視圖模型這樣

public class CreateUserVm 
{ 
    public string UserName { set; get; } 
    public IEnumerable<RoleVm> Roles { set; get; } 
    public int SelectedRole { set; get; } 
} 
public class RoleVm 
{ 
    public int Id { set; get; } 
    public string RoleName { set; get; }   
} 

而在你的GET動作,

public IActionResult Index() 
{ 
    var vm = new CreateUserVm 
    { 
     Roles = new List<RoleVm> 
     { 
      new RoleVm {Id = 1, RoleName = "Admin"}, 
      new RoleVm {Id = 2, RoleName = "Editor"}, 
      new RoleVm {Id = 3, RoleName = "Reader"} 
     } 
    }; 
    return View(vm); 
} 

在視圖中,你可以簡單地使用標記的輸入標籤。

@model YourNamespaceHere.CreateUserVm 
<form asp-action="Index" asp-controller="Home"> 
    <label class="label">User name</label> 
    <div class="col-md-10"> 
     <input type="text" asp-for="UserName" /> 
    </div> 
    <label class="label">Select a Role</label> 
    <div class="col-md-10"> 
    @foreach (var item in Model.Roles) 
    { 
     <input asp-for="SelectedRole" type="radio" value="@item.Id" /> @item.RoleName 
    } 
    </div> 
    <input type="submit" /> 
</form> 

當您發佈的形式,該ROLD ID爲選定的角色將在SelectedRole財產

記住,上面的剃刀代碼將產生輸入元素與相同Id屬性值保持和由循環生成的每個輸入的name屬性值。在上例中,它將生成Idname屬性值設置爲SelectedRole的3個輸入元素(單選按鈕類型)。模型綁定將起作用,因爲name屬性值與我們視圖模型中的屬性名稱(SelectedRole)匹配,但重複的Id屬性值可能會給客戶端代碼帶來麻煩(文檔中的重複ID無效)

+0

I' m使用單選按鈕上的JS單擊事件來提交表單,但收音機的值永遠不會傳遞給我的操作方法。我必須將無線電輸入上的名稱或ID屬性設置爲特定的內容嗎? –

+0

設置名稱屬性的技巧 –

+0

問題:我可以將值設置爲true或false? '值= 「真」'? –

相關問題