2016-05-25 21 views
-1

選択した項目のドロップダウンリストから値を取得するのに問題があります。 別のビューに値を渡す必要があります。ドロップダウンリストからASP.NET MVC 5のコントローラに選択された値を取得する方法

のViewModel:

public class HomeVM 
{ 
    public IEnumerable<SelectListItem> UserList { get; set; } 
    public IEnumerable<Examination> Exam { get; set; } 
    public string SelectedUser { get; set; } 
} 

コントローラ: (ここでは、最初のアクティブな検査がある場合は、それが正常に動作チェックしています。)表示

public ActionResult Index() 
{ 
    var activeExam = db.Examinations.Where(o => (o.StartTime <= DateTime.Now && o.Duration > DateTime.Now)).ToList(); 
    if(activeExam != null) 
    { 
     var hVM = new HomeVM { Exam = activeExam }; 
     hVM.UserList = db.Users 
      .Select(o => new SelectListItem 
      { 
       Value = o.UserID.ToString(), 
       Text = o.Name 
      }); 
     return View(hVM); 
    } 
    var nullHomeView = new HomeVM(); 
    return View(nullHomeView); 
} 

: (私は、コードを消去しました私は読みやすさのためにスペースを取っていると思っていました。テーブルや行などを作成するためのコードを消去しました)

@model ProjWebb.ViewModels.HomeVM 
.... 
@if (Model.Exam != null) 
{ 
    foreach (var item in Model.Exam) 
    { 
     <tr> 
      <td width="20%"> 
       @Html.DisplayFor(model => item.Cours.Name) 
      </td> 
      <td width="20%"> 
       @Html.DisplayFor(model => item.ExamID) 
      </td> 
      <td width="20%"> 
       @Html.DisplayFor(model => item.StartTime) 
      </td> 
      <td width="20%"> 
       @Html.DropDownList("UserList") 
      </td> 

特に、BeginFormがない場合は、選択した値を取得する方法がわかりません。 ドロップダウンリストで名前を選択したときにユーザーがクリックできるリンクを作成し、そのリンクのuserIDをコントローラーに渡すだけです。

+1

コレクションのフォームコントロールを生成するために 'foreach'ループを使用することはできません。 'for'ループであるかカスタムの' EditorTemplate'を使用する必要があります - [this answer](http://stackoverflow.com/questions/30094047/html-table-to-ado-net-datatable/30094943#30094943 ) –

+0

しかし、選択した値をどのプロパティにバインドしたいですか? –

+0

おそらく、HTMLヘルパー拡張メソッド[BeginCollectionItem](http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/)があなたを助けることでしょう –

答えて

0
hVM.UserList = db.Users 
       .Select(o => new SelectListItem 
       { 
        Value = o.UserID.ToString(), 
        Text = o.Name 
       },selectedUserId.Value); 

ここで設定できるモデルとその値の値を取得できます。 asUserId.value as

+0

ああ、私はそれを試みます、私はそれが可能だったことを知りませんでした、入力のおかげで。 – JohnDoe

+0

@ JohnDoe、このコードはコンパイルできません。そしてそれはあなたの疑問とは何の関係もありません –

関連する問題