ADO.NETエンティティデータモデルに2つのリンクされたモデルがあります。ASP.NET MVC 5 2つのリンクされたデータモデルからフォームデータを送信
AspNetUsers私の見解では
public partial class AspNetUsers
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public AspNetUsers()
{
this.UserVacations = new HashSet<UserVacations>();
this.UserSicknesses = new HashSet<UserSicknesses>();
}
public string Id { get; set; }
public string Email { get; set; }
public bool EmailConfirmed { get; set; }
public string PasswordHash { get; set; }
public string SecurityStamp { get; set; }
public string PhoneNumber { get; set; }
public bool PhoneNumberConfirmed { get; set; }
public bool TwoFactorEnabled { get; set; }
public Nullable<System.DateTime> LockoutEndDateUtc { get; set; }
public bool LockoutEnabled { get; set; }
public int AccessFailedCount { get; set; }
public string UserName { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<UserVacations> UserVacations { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<UserSicknesses> UserSicknesses { get; set; }
}
とUserSicknesses
public partial class UserSicknesses
{
public int SicknessId { get; set; }
public string UserId { get; set; }
public System.DateTime StartDate { get; set; }
public System.DateTime EndDate { get; set; }
public AspNetUsers AspNetUsers { get; set; }
}
私は今UserSicknesses
<div class="form-group row">
@Html.LabelFor(model => model.AspNetUsers.UserName, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-xs-10">
@Html.EditorFor(model => model.AspNetUsers.UserName, new { htmlAttributes = new { @class = "form-control"} })
@Html.ValidationMessageFor(model => model.AspNetUsers.UserName, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group row">
@Html.LabelFor(model => model.StartDate, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-xs-10">
@Html.EditorFor(model => model.StartDate, new { htmlAttributes = new { @class = "form-control", type = "date" } })
@Html.ValidationMessageFor(model => model.StartDate, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group row">
@Html.LabelFor(model => model.EndDate, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-xs-10">
@Html.EditorFor(model => model.EndDate, new { htmlAttributes = new { @class = "form-control", type = "date" } })
@Html.ValidationMessageFor(model => model.EndDate, "", new { @class = "text-danger" })
</div>
</div>
から問題をAspNetUsersと二つの日付のユーザー名を提出したいです投稿時にuserSicknesses.AspNetUsersはNullです私はUserNameを受け取ることができません。 これらは両方ともUserIdによって接続されていますが、私はUserNameと2つの日付を取得したいだけです。 __RequestVerificationToken:KlY6b4CD41PaGoKJ ... AspNetUsers.UserName:管理者 開始日:2016年12月4日 終了日:2016年12月18日午前何
フォームデータFirefoxは私に語って
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "SicknessId,StartDate,EndDate,UserName")] UserSicknesses userSicknesses)
{
if (ModelState.IsValid && User.Identity.IsAuthenticated)
{
if (userSicknesses.StartDate > userSicknesses.EndDate)
{
ModelState.AddModelError("StartDate", "Das erste Datum kann nicht größer als das zweite sein!");
return View(userSicknesses);
}
int sicId = 1;
// Just for testing purposes but userSicknesses.AspNetUsers is Null
string s = userSicknesses.AspNetUsers.UserName;
if (db.UserSicknesses.Any())
{
sicId = (from a in db.UserSicknesses select a.SicknessId).Max() + 1;
}
userSicknesses.SicknessId = sicId;
userSicknesses.UserId = db.AspNetUsers.Where(u => u.UserName == userSicknesses.AspNetUsers.UserName).Select(u => u).FirstOrDefault().ToString();
db.UserSicknesses.Add(userSicknesses);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(userSicknesses);
}
私は間違っている? ありがとうございます。
btw:これはasp.netの私の最初のプロジェクトです。私はすべてのアドバイスを感謝します!この結果を渡すためのコードの下
比較的簡単な方法の1つは、この目的のために別のモデルを作成することです。このモデルには、リクエストを処理するために必要なすべてのフィールドが含まれている必要があります。 –
これは一つの選択肢になります。しかし、私はそのような種類の汚れを見つけるのですか?私の "UserSicknesses"モデルにAspNetUsers変数があるので、なぜそれを埋めることができないのですか? – Licx