簡體   English   中英

MVC:MultiSelectList對象引用未設置為對象的實例

[英]MVC: MultiSelectList Object reference not set to an instance of an object

我試圖在局部視圖中綁定ListBox,但出現異常...

你調用的對象是空的。

引用@Html.ListBoxFor(x => x.SelectedRoles, Model.Roles)

我不確定自己在做什么錯...

模型:

public class RegisterModel {
    public string UserName { get; set; }
    public string Email { get; set; }
    public string Password { get; set; }
    public string ConfirmPassword { get; set; }
    public string[] SelectedRoles { get; set; }
    public MultiSelectList Roles { get; set; }
}

控制器:

public class AdminController : Controller  {
    [ChildActionOnly]
    public ActionResult _AddUser() {
        var model = new RegisterModel {
            Roles = new MultiSelectList(Roles.GetAllRoles())
        };

        return View(model);
    }

}

PartialView _AddUser.cshtml:

@model RobotDog.Models.RegisterModel

@using(Html.BeginForm("_AddUser","Admin", FormMethod.Post)) {
    @Html.EditorFor(x => x.Email, new { @class = "input-xlarge", @placeholder = "Email"})
    @Html.EditorFor(x => x.UserName, new { @class = "input-xlarge", @placeholder = "User Name"})
    @Html.EditorFor(x => x.Password, new { @class = "input-xlarge", @placeholder = "Password"})
    @Html.ListBoxFor(x => x.SelectedRoles, Model.Roles)
}

這是引用_AddUser.cshtml Users.cshtml的視圖:

@model IEnumerable<RobotDog.Models.UserModel>
<table></table>
<div id="addUser">
    @Html.Partial("_AddUser", new ViewDataDictionary())
</div>

您的示例的問題在於,通過調用@ Html.Partial可以呈現部分_AddUser,而無需通過控制器_AddUser方法。 這意味着部分視圖的模型沒有要訪問的Model.Roles。 您可以通過兩種不同的方法解決此問題。

一種可能性是使用@ Html.RenderAction或@ Html.Action調用控制器方法,並讓控制器方法_AddUser在設置時填充值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM