Asp.net mvc 我的模型在提交期间不具有约束力

Asp.net mvc 我的模型在提交期间不具有约束力,asp.net-mvc,Asp.net Mvc,我正在练习MVC ASP.net,我遇到了一个问题。在加载过程中,我获取数据并将其传递给模型进行显示,然后再次尝试传递以进行发布以保存数据,但模型无法获取数据。请帮助我了解我缺少的内容。多谢各位 我附上了一个图像,它显示了什么,这些数据应该得到张贴 我的模型 public class RoomReservation { public RoomReservation() { AddAmenity = new List<Ameni

我正在练习MVC ASP.net,我遇到了一个问题。在加载过程中,我获取数据并将其传递给模型进行显示,然后再次尝试传递以进行发布以保存数据,但模型无法获取数据。请帮助我了解我缺少的内容。多谢各位

我附上了一个图像,它显示了什么,这些数据应该得到张贴

我的模型

public class RoomReservation
    {
        public RoomReservation()
        {
            AddAmenity = new List<AmenityReservation>();
        }

        public int Room_id { get; set; }
        public string Room_name { get; set; }
        public int RoomType_id { get; set; }
        public string Room_Type { get; set; }
        public decimal Room_rate { get; set; }

        public List<AmenityReservation> AddAmenity { get; set; }

    }

    public class AmenityReservation
    {
        public int Amenity_id { get; set; }
        public string Amenity_Name { get; set; }
        public decimal? Amenity_Price { get; set; }
        public int Quantity { get; set; }
    }
}
我的看法

@model Reservation_System.Models.RoomReservation

@{
    ViewBag.Title = "RoomReservation";
    Layout = "~/Views/Shared/_MasterLayout.cshtml";
}

<div style="padding-top:10%">

</div>


@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    <section class="container tm-home-section-1" id="more">
        <div class="row">
            <div class="col-12">
                <div class="col-lg-6 col-md-6">
                    <div class="jumbotron">
                        <h2>RoomReservation</h2>
                        <div class="row">
                            @Html.DisplayFor(x => x.Room_id)
                        </div>
                        <div class="row">
                            @Html.DisplayFor(x => x.Room_Type)
                        </div>
                        <div class="row">
                            @Html.DisplayFor(x => x.Room_rate)
                        </div>
                    </div>
                </div>
                <div class="col-lg-6 col-md-6">
                    <table class="table">
                        <thead>
                            <tr>
                                <td style="visibility:hidden"></td>
                                <td>Amenity</td>
                                <td>Price</td>
                                <td>Quantity</td>
                            </tr>
                        </thead>
                        <tbody>
                            @foreach (var n in Model.AddAmenity)
                            {
                                <tr>
                                    <td style="visibility:hidden">@n.Amenity_id</td>
                                    <td>@n.Amenity_Name</td>
                                    <td>@n.Amenity_Price</td>
                                    <td><input type="text" value="@n.Quantity" /> </td>
                                </tr>
                            }
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
        <div class="row">
            <div>
                <input type="submit" value="Reserve" />
            </div>
        </div>
    </section>
}
@model Reservation\u System.Models.RoomReservation
@{
ViewBag.Title=“房间预订”;
Layout=“~/Views/Shared/_MasterLayout.cshtml”;
}
@使用(Html.BeginForm())
{
@Html.AntiForgeryToken()
客房预订
@DisplayFor(x=>x.Room\u id)
@DisplayFor(x=>x.Room\u类型)
@Html.DisplayFor(x=>x.Room\u rate)
便利设施
价格
量
@foreach(模型中的var n.附加)
{
@n、 舒适性
@n、 市容名称
@n、 市容价格
}
}
在视图中显示,数据应在过帐期间传递以保存到数据库中


属性Html上没有该名称。因此,当您将表单发布到控制器时,该值不会绑定到模型上的属性

用下面的代码更改
礼仪的循环

<tbody>
@for (int i = 0; i < Model.AddAmenity.Count; i++)
{
  <tr>

    <td>@Html.HiddenFor(m => m.AddAmenity[i].Amenity_id)</td>
    <td>@Html.TextBoxFor(m => m.AddAmenity[i].Amenity_Name, new { @readonly = "readonly" })</td>
    <td>@Html.TextBoxFor(m => m.AddAmenity[i].Amenity_Price, new { @readonly = "readonly" })</td>
    <td>@Html.TextBoxFor(m => m.AddAmenity[i].Quantity)</td>
  </tr>
}
</tbody>

等等,关于类型和比率

您需要使用
HiddenFor
DisplayFor
,因为

HiddenFor
用于准备发布值,而
DisplayFor
用于显示这些值

参考:


  • 表单dos中唯一的表单控件甚至没有
    name
    属性,因此它的值从未提交过。永远不要手动生成表单控件-始终使用
    HtmlHelper
    方法。而且
    foreach
    循环无论如何都不会工作-请参阅
    给出name@aakash-这与模型没有任何关系!
    <tbody>
    @for (int i = 0; i < Model.AddAmenity.Count; i++)
    {
      <tr>
    
        <td>@Html.HiddenFor(m => m.AddAmenity[i].Amenity_id)</td>
        <td>@Html.TextBoxFor(m => m.AddAmenity[i].Amenity_Name, new { @readonly = "readonly" })</td>
        <td>@Html.TextBoxFor(m => m.AddAmenity[i].Amenity_Price, new { @readonly = "readonly" })</td>
        <td>@Html.TextBoxFor(m => m.AddAmenity[i].Quantity)</td>
      </tr>
    }
    </tbody>
    
    @Html.EditorFor(m => m.Room_id)
    @Html.HiddenFor(m => m.Room_id) 
    @Html.DisplayFor(m => m.Room_id)