【问题标题】:HiddenFor not passing value to controller?HiddenFor 不向控制器传递值?
【发布时间】:2019-12-29 04:28:48
【问题描述】:

我需要为放置在表格行中的每个值从模型获取一个 ID 到控制器。但是,检查结果时,AmbassadorEventId = 0。

我尝试使用@Html.HiddenFor(x => Model.Staffings[i].AmbassadorEventId) 而非@Html.HiddenFor(x => x.Staffings[i].AmbassadorEventId) 进行澄清

查看:

<form asp-action="StaffStudents" asp-controller="Admin" method="post">
                    <table id="staffingTable">
                        <thead>
                            <tr>
                                <th>Event</th>
                                <th>Sub Event</th>
                                <th>Student Name</th>
                                <th>Academic Area</th>
                                <th>Majors</th>
                                <th>Minors</th>
                                <th>Staff?</th>  
                            </tr>
                        </thead>
                        <tbody>

                            @for (int i = 0; i < Model.Staffings.Count; i++)
                            { 
                                <tr>
                                    <td>@Model.Staffings[i].Event.EventName</td>
                                    <td>@Model.Staffings[i].SubEvent.SubEventName</td>
                                    <td>@Model.Staffings[i].FirstName @Model.Staffings[i].LastName</td>
                                    <td>@Model.Staffings[i].AcademicArea</td>
                                    <td>
                                        @foreach (var item in Model.Staffings[i].Majors)
                                        {
                                            item.ToString();
                                        }
                                    </td>
                                    <td>
                                        @foreach (var item in Model.Staffings[i].Minors)
                                        {
                                            item.ToString();
                                        }
                                    </td>
                                    <td>@Html.CheckBoxFor(x => Model.Staffings[i].Staff)</td>
                                    @Html.HiddenFor(x => x.Staffings[i].ProfileId)
                                    @Html.HiddenFor(x => x.Staffings[i].AmbassadorEventId)
                                </tr>
                            }
                        </tbody>
                    </table>

                    <button type="submit" id="addStaffingsBtn" class="wdn-button wdn-button-complement" style="float:right;">Submit</button>
                </form>

型号:

public class AdminStaffStudentViewModel
    {   
        public List<Staffing> Staffings { get; set; } = new List<Staffing>();
    }


    public class Staffing
    {

        public Entity.SubEvent SubEvent { get; set; }

        public Event Event { get; set; }

        public string FirstName { get; set; }

        public string LastName { get; set; }

        public string AcademicArea { get; set; }

        public List<string> Majors { get; set; }

        public List<string> Minors { get; set; }

        public string ClassLevel { get; set; }

        public List<AcademicYear> AcademicHistory { get; set; }

        public bool Staff { get; set; }
        public int ProfileId { get; internal set; }
        public int AmbassadorEventId { get; internal set; }

控制器:

[HttpPost]
        [Authorize(Roles = "Admin")]
        public IActionResult StaffStudents(AdminStaffStudentViewModel model)
        {

                _adminManager.StaffStudentsToEvents(model.Staffings);


            return RedirectToAction(nameof(StaffStudents));
        }

我应该能够在发布时将视图中的值返回给控制器。

【问题讨论】:

    标签: asp.net entity-framework asp.net-core razor


    【解决方案1】:

    哦,我想通了,我让我的 setter 符合我需要的内部值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多