Was ist diese Codezeile? ViewBag.RoleId = new SelectList (RoleManager.Roles, “Id”, “Name”)

In einem Codebeispiel wurde die folgende Codezeile in einer Action-Methode eines Controllers heruntergeladen. ViewBag.RoleId = neue SelectList (RoleManager.Roles, "Id", "Name") oder wahrscheinlich die asynchrone Version ViewBag.RoleId = neue SelectList (warten auf RoleManager.Roles.ToListAsync (), "Id", "Name");

Ich kann nicht verstehen, was hier passiert. Auch in der entsprechenden Ansicht sehe ich nirgendwo, dass ViewBag.RoleId verwendet wird. Stattdessen finde ich in der Ansicht@ Html.DropDownList ("RoleId", "No Roles")

Es scheint eine triviale Verbindung zwischen den beiden zu bestehen. Kann jemand etwas Licht auf das werfen, was ich vermisse?

Das Folgende ist die Codezeile in der Aktionsmethode.

public async Task<ActionResult> Create()
{
    //Get the list of Roles
    ViewBag.RoleId = new SelectList(await RoleManager.Roles.ToListAsync(), "Id", "Name");
    return View();
}

Und die entsprechende Ansicht lautet wie folgt.

@model AspnetIdentitySample.Models.RegisterViewModel
@{
    ViewBag.Title = "Create";
}

<hgroup class="title">
    <h1>@ViewBag.Title.</h1>
</hgroup>

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary()

    <fieldset class="form-horizontal">
        <legend>Create a new user.</legend>
        <div class="control-group">
            @Html.LabelFor(m => m.UserName, new { @class = "control-label" })
            <div class="controls">
                @Html.TextBoxFor(m => m.UserName)
            </div>
        </div>
        <div class="control-group">
            @Html.LabelFor(m => m.Password, new { @class = "control-label" })
            <div class="controls">
                @Html.PasswordFor(m => m.Password)
            </div>
        </div>
        <div class="control-group">
            @Html.LabelFor(m => m.ConfirmPassword, new { @class = "control-label" })
            <div class="controls">
                @Html.PasswordFor(m => m.ConfirmPassword)
            </div>
        </div>

        <div class="control-group">
            @Html.LabelFor(m => m.HomeTown, new { @class = "control-label" })
            <div class="controls">
                @Html.TextBoxFor(m => m.HomeTown)
            </div>
        </div>
        <h4>Select Role for User</h4>
        <hr />
        @Html.DropDownList("RoleId","No Roles")
        <div class="form-actions no-color">
            <input type="submit" value="Create" class="btn" />
        </div>
    </fieldset>
}

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage