2017-03-11 9 views
1

皆さん、私は、この設定を正しく行っていたと確信していましたが、私が試みたときはいつも、distributeeロールのすべてのユーザのリストを含む、私の作成ビューにドロップダウンリストを追加しようとしています私は 受信作成ページを開く{ "キー 'ユーザーID' を有する型の全くViewDataをアイテム 'IEnumerableを' がありません" を}'UserId'キーを持つ 'IEnumerable <SelectListItem>'タイプのViewDataアイテムはありません。 (他の質問はすでに読み込まれています)

制御方法

[HttpPost] 
     [ValidateAntiForgeryToken] 
     [Authorize(Roles = "Document Author")] 
     public ActionResult Create([Bind(Include = "DocumentID,DocTitle,RevisionNumber,DocumentAuthor,CreationDate,ActivationDate,DocumentStatus,FilePath,Distributee") ] Document document, HttpPostedFileBase file, object selectedName = null) 
     { 
      try 
      { 
       if (file.ContentLength > 0) 
       { 
        string _FileName = Path.GetFileName(file.FileName); 
        string _path = Path.Combine(Server.MapPath("~/UploadedFiles"), _FileName); 
        file.SaveAs(_path); 

        document.CreationDate = DateTime.Now; 
        document.ActivationDate = DateTime.Now; 
        document.DocumentAuthor = User.Identity.Name; 
        document.DocumentStatus = "Draft"; 
        document.FilePath = _path; 
       } 
       if (ModelState.IsValid) 
        { 
        ViewBag.Message = "File Uploaded Successfully!!"; 
        db.Documents.Add(document); 
        db.SaveChanges(); 
        return RedirectToAction("Index"); 
        } 
      } 
      catch 
      { 
       ViewBag.Message = "File upload failed!!"; 
       return View(document); 
      } 
      var nameQuery = from user in db.Users 
          where user.Roles.Any(r => r.RoleId == "4ba13c9f-2403-45ad-961e-7c5cb6b08bc9") 
          orderby user.FirstName 
          select new 
          { 
           Id = user.Id, 
           Name = user.FirstName + " " + user.LastName 
          }; 
      ViewBag.UserId = new SelectList(nameQuery, "Id", "Name", selectedName); 
      return View(document); 
     } 

@model IP3Latest.Models.Document 

@{ 
    ViewBag.Title = "Create"; 
} 

<h2>Create</h2> 




@using (Html.BeginForm("Create", "Documents", FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 
    @Html.AntiForgeryToken() 



    <div class="form-horizontal"> 
     <h4>Document</h4> 
     <hr /> 
     @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
     <div class="form-group"> 
      @Html.LabelFor(model => model.DocTitle, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.DocTitle, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.DocTitle, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div class="form-group"> 
      @Html.LabelFor(model => model.RevisionNumber, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.RevisionNumber, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.RevisionNumber, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div> 
      @Html.DropDownList("UserId") 
     </div> 

     <div> 
      @Html.TextBox("file", "", new { type = "file" }) <br /> 


      <input type="submit" value="Upload" /> 

      @ViewBag.Message 

     </div> 
    </div> 
} 

<div> 
    @Html.ActionLink("Back to List", "Index") 
</div> 

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

私はこれに関する他のすべての質問をチェックして、彼らはすべてあなたが提供できる任意のヘルプが評価されるように少し異なっているように見えた。

+0

ビューを返す前に、 'ViewBag.UserId'の値を設定しないためです。しかし、あなたが 'HtmlHelper'を使って'