2017-07-04 15 views
0

MVC 5アプリケーションで作成されたロールを持つユーザーがいくつかあります。私は基本的なチケット情報を含むチケットモデルを持っています。しかし今、私はこのTicket Modelに "Assigned To"というプロパティを追加したいので、このプロパティ値を利用可能なユーザに割り当てたいと思います。MVC5のすべてのユーザーのドロップダウンリストを作成する方法

私の見解では、使用可能なすべてのユーザーのリストをドロップダウンして、チケットを割り当てるユーザーを選択できます。モデルでこのプロパティを作成する方法と、ビューでドロップダウンリストを作成する方法は?おかげ

アップデート1:

Models.Application model = db.Applications 
      .Include("Source") 
      .Include(.....) 
      .SingleOrDefault(m => m.Id == id); 

     if (model == null) 
     { 
      return new HttpNotFoundResult(); 
     } 

     return View(model); 

どのように私はあなたが提案したコードを組み込むことができます:私はすでに表示し、その次のように戻るには、既存のActionResultモデルを持っている私のインデックス()メソッドで 既に持っているものとIndex()メソッド?

答えて

0

データベースを照会してユーザーのリストを取得し、これをビュー・モデルに転記します。 DBからUserクラスを直接渡さないようにしてください。パスワードと塩分などをブラウザに送信します。ビューに必要なフィールドのみを含むDBシェイプからVMシェイプに変換する必要があります。

のViewModel:

class MyViewModel 
{ 
    public IEnumerable<User> Users { get; set; } 
    public string User { get; set;} 
} 

[HttpGet] 
public ActionResult Index() 
{ 
    var viewModel = new MyViewModel() 
    { 
     Users = <map users from db> 
    }; 

    return this.View(viewModel); 
} 

ビュー:

<div class="form-group"> 
    @Html.LabelFor(m => m.User) 
    <div class="col-md-10"> 
     @Html.DropDownListFor(x => x.User, new SelectList(Model.Users, "Id", "Name"), new { @class = "form-control" }) 
     @Html.ValidationMessageFor(m => m.OriginStation, "", new { @class = "text-danger" }) 
    </div> 
</div> 

次に、フォームのポストバックハンドラ:

[HttpPost]  
public ActionResult Index(MyViewModel viewModel) 
{ 
    viewModel.User now contains the id of the user 
} 
+0

こんにちは、私のインデックス()メソッドでは、私はすでに既存のActionResultモデルを持っています見るに戻る。 Index()メソッドで提案したコードを、すでに持っているコードに組み込むにはどうすればよいですか?質問欄の**更新1 **をご覧ください。 – CB4

+0

この問題の鍵は、あなたのビューモデルのユーザのリストと、DropDownListForの ''新しいSelectList''部分があることを確認することです。あなたのモデルを推測できますか?アプリケーションにユーザーのリストが含まれていますか? – Neil

+0

いいえ、My ** Models.Application **には基本的なチケット情報のみが含まれています。私の問題は、私はこのモデルにユーザーのリストを追加する方法を知らないです。 – CB4

関連する問題