контроллер получает нулевые данные из представления CRUD - PullRequest
0 голосов
/ 24 марта 2020

У меня есть две модели, подобные этой:

  public class Student
    { 

    public string StudentId{get;set;}
    public String StudentName{get;set;}
    public StudentStatus StudentStatus{get;set;}

    }

 public class StudentStatus
    {
        public string StudentStatusId{get;set;}
        public string StudentStatusTitle{get;set;}
    }

У меня есть модель вида:

 public class StudentCrudModel
    {
        public Student Student{get;set;}
        public IEnumerable<StudentStatus> StudentStatuses{get;set;}
    }

У меня есть представление для создания нового студента

 @model StudentDatabase.ViewModels.StudentCrudModel
    <h1>Create</h1>

    <h4>Department</h4>
    <hr />
    <div class="row">
        <div class="col-md-4">
            <form asp-action="Create">
                <div asp-validation-summary="ModelOnly" class="text-danger"></div>
                <div class="form-group">
                    <label asp-for="Student.StudentName" class="control-label"></label>
                    <input asp-for="Student.StudentName" class="form-control" />
                    <span asp-validation-for="Student.StudentName" class="text-danger"></span>
                </div>
                </div>
                <div class="form-group">
            <label asp-for="Student.StudentStatus" class="control-label"></label>
            <select asp-for="Student.StudentStatus.StudentStatusId" class="form-control">
                @foreach (var status in Model.StudentStatuses)
                {
                    <option value="@status.StudentStatusId">@status.StudentStatusTitle</option>
                }
            </select>
            <span asp-validation-for="Student.StudentStatus" class="text-danger"></span>
        </div>
        <div class="form-group">
            <input type="submit" value="Create" class="btn btn-primary" />
        </div>
            </form>
          </div>
      </div>

В моем контроллере метод post для создания нового студента, у меня есть это

    public async Task<IActionResult>  Create([Bind("StudentId,StudentName,StudentStatus,StudentStatus.StudentStatusId")] Student student){
//code that creates a student
}

Моя проблема в том, что в методе контроллера для создания студента метод становится нулевым независимо от значений, которые я ввел при загрузке приложения моя модель привязки не работает. Заранее благодарим за помощь.

1 Ответ

1 голос
/ 24 марта 2020

В представлении у вас есть @model StudentDatabase.ViewModels.StudentCrudModel, но в контроллере у вас есть

public async Task<IActionResult> Create([Bind("StudentId,StudentName,StudentStatus.StudentStatusId")] Student student)

Попробуйте вместо этого поставить

public async Task<IActionResult> Create([Bind("StudentId,StudentName,StudentStatus.StudentStatusId")] StudentCrudModel student)

, просто укажите StudentCrudModel вместо Student объект в параметрах

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...