Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NET MVC 5从两个链接数据模型提交表单数据_Asp.net Mvc_Asp.net Mvc 5 - Fatal编程技术网

Asp.net mvc ASP.NET MVC 5从两个链接数据模型提交表单数据

Asp.net mvc ASP.NET MVC 5从两个链接数据模型提交表单数据,asp.net-mvc,asp.net-mvc-5,Asp.net Mvc,Asp.net Mvc 5,我在ADO.NET实体数据模型中有两个链接模型 网络用户 public partial class AspNetUsers { [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] public AspNetUsers() { this.UserVacations

我在ADO.NET实体数据模型中有两个链接模型

网络用户

    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; }
}
在我看来,我想提交AspNetUsers的用户名和UserSickness的两个日期

    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; }
}
    <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>
Firefox以数据的形式告诉我: __RequestVerificationToken:KlY6b4CD41PaGoKJ。。。 AspNetUsers.UserName:admin 起始日期:2016-12-04 截止日期:2016-12-18

我做错了什么? 先谢谢你


顺便说一句:这是我在asp.net中的第一个项目,我非常感谢你的建议

检查以下代码以通过此结果:

$('btnClick')。在('click',函数(){
var用户患病率={
“AspNetUsers.UserName”:$(“#AspNetUsers_UserName”).val(),
“StartDate”:$(“#StartDate”).html(),
“结束日期”:$(“#结束日期”).val()
};
$.ajax({
url:“/ControllerName/Create”,
类型:“Post”,
async:false,
数据:JSON.stringify(UserSicknesses),
数据类型:“html”,
contentType:“应用程序/json;字符集=utf-8”,
成功:功能(结果){
$(“#gdiv”).empty();
$(“#gdiv”).html(结果);
}
});
});

我认为您可以使用包含这两个模型的ViewModel并将其传递给视图。
,这与您的问题非常相似

一个相对简单的方法是为此创建一个不同的模型。此模型应包含处理请求所需的所有字段。这是一个选项。但我觉得那是肮脏的?我的意思是我的“UserSicknesses”模型有它的AspNetUsers变量,所以为什么我不能填充它呢?像这样更改您的操作并检查:public ActionResult Create(UserSicknesses UserSicknesses)哇,现在它工作了!非常感谢你!但我想知道为什么需要删除“[Bind(Include=“SicknessId,UserId,StartDate,EndDate”)]”。。
        [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);
    }