選択した項目のドロップダウンリストから値を取得するのに問題があります。 別のビューに値を渡す必要があります。ドロップダウンリストから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をコントローラーに渡すだけです。
コレクションのフォームコントロールを生成するために 'foreach'ループを使用することはできません。 'for'ループであるかカスタムの' EditorTemplate'を使用する必要があります - [this answer](http://stackoverflow.com/questions/30094047/html-table-to-ado-net-datatable/30094943#30094943 ) –
しかし、選択した値をどのプロパティにバインドしたいですか? –
おそらく、HTMLヘルパー拡張メソッド[BeginCollectionItem](http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/)があなたを助けることでしょう –