MVCアプリケーションを作成しています。 ViewModelを使用するViewを作成しており、コントローラが渡したこのビューのデータベースエンティティも使用しています。
コントローラ:mvc複数のモデルを表示する
public ActionResult AddGroup(AddGroupViewModel model)
{
ClassDeclarationsDBEntities1 entities=new ClassDeclarationsDBEntities1();
return View(entities.Subjects.ToList());
}
はViewModelに:
public class AddGroupViewModel
{
[Required]
[Display(Name = "Subject")]
public string subject_name { get; set; }
[Required]
[Display(Name = "Number of Groups")]
public int qty { get; set; }
}
そして最後に私の見解:
@model List<ClassDeclarationsThsesis.Classes.Subject>
@model ClassDeclarationsThsesis.Models.AddGroupViewModel
@{
ViewBag.Title = "Add Groups";
}
<h2>Add Groups to subjects</h2>
@using (Html.BeginForm("AddGroup", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
@Html.AntiForgeryToken()
<h4>Create new groups.</h4>
<hr />
@Html.ValidationSummary("", new { @class = "text-danger" })
<div class="form-group">
@{
List<SelectListItem> listItems1 = new List<SelectListItem>();
}
@foreach (var subject in Model)
{
listItems1.Add(new SelectListItem
{
Text = subject.name,
Value = subject.name,
Selected = true
});
}
@Html.LabelFor(m => m.subject_name, new {@class = "col-md-2 control-label"})
<div class="col-md-10">
@Html.DropDownListFor(m => m.subject_name, listItems1, new {@class = "form-control"})
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.qty, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.qty, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" class="btn btn-default" value="Submit" />
</div>
</div>
}
ご覧のように、私は私の見解では二つのモデルを使用しようとしています。しかし、例外を指定します(それらを区別する方法もあります)。これら2つのモデルをビューで結合するにはどうすればよいですか?
編集:
だから私は答えで提案するものでしたが、今私は、このような例外を取得:
{"The class 'ClassDeclarationsThsesis.Models.Subject' has no parameterless constructor."}
クラスは次のようになります。
namespace ClassDeclarationsThsesis.Models
{
using System;
using System.Collections.Generic;
public partial class Subject
{
private int v;
private int userid;
public Subject(int v, int userid, string name)
{
this.class_id = v;
this.user_id = userid;
this.name = name;
}
public int class_id { get; set; }
public int user_id { get; set; }
public string name { get; set; }
public virtual Group Group { get; set; }
public virtual Subjects_Users Subjects_Users { get; set; }
public virtual Task Task { get; set; }
}
}
どのように私はそれを解決するのですか?
'List'タイプの 'AddGroupViewModel'にプロパティを作成しますか?または、これら2つのタイプのプロパティを持つビューモデルを作成し、それを使用しますか? 1つのタイプしか使用できませんが、好きなようにそのタイプをカスタマイズできます。 –
David
@Davidええ、しかし、私はデータベースから渡されたデータをどのように取得するのですか? –
既に持っていて既にデータを取得するために使用している 'entities'オブジェクトから... – David