Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.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
C# 从视图CRUD接收空数据的控制器_C#_Asp.net Mvc_Visual Studio_Model Binding_Ef Core 3.0 - Fatal编程技术网

C# 从视图CRUD接收空数据的控制器

C# 从视图CRUD接收空数据的控制器,c#,asp.net-mvc,visual-studio,model-binding,ef-core-3.0,C#,Asp.net Mvc,Visual Studio,Model Binding,Ef Core 3.0,我有两个这样的模型: public class Student { public string StudentId{get;set;} public String StudentName{get;set;} public StudentStatus StudentStatus{get;set;} } public class StudentStatus { public string StudentStatusId{g

我有两个这样的模型:

  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;}
    }
public class StudentCrudModel
{
公立学生学生{get;set;}
public IEnumerable studentStatus{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>
@model StudentDatabase.ViewModels.StudentCrudModel
创造
部门

@foreach(模型中的var状态。StudentStatus) { @status.StudentStatusTitle }
在我的控制器中,创建新学生的post方法

    public async Task<IActionResult>  Create([Bind("StudentId,StudentName,StudentStatus,StudentStatus.StudentStatusId")] Student student){
//code that creates a student
}
公共异步任务创建([Bind(“StudentId,StudentName,StudentStatus,StudentStatus.StudentStatusId”)]Student-Student){
//创建学生的代码
}
我的问题是,在创建学生的控制器方法中,无论我在加载应用程序时在视图中输入了多少值,该方法都会变为null,我的模型绑定不起作用。
提前感谢您的帮助。

在视图中您有
@model StudentDatabase.ViewModels.StudentCrudModel
,但在控制器中您有

public async Task<IActionResult> Create([Bind("StudentId,StudentName,StudentStatus.StudentStatusId")] Student student)
public异步任务创建([Bind(“StudentId,StudentName,StudentStatus.StudentStatusId”)]Student-Student)
试一试推杆

public async Task<IActionResult> Create([Bind("StudentId,StudentName,StudentStatus.StudentStatusId")] StudentCrudModel student)
public异步任务创建([Bind(“StudentId,StudentName,StudentStatus.StudentStatusId”)]StudentCrudModel student)

相反,只需参考参数中的
StudentCrudModel
而不是
Student
对象

是否尝试更改控制器参数?它解决了你的问题吗?我可以在评论中问另一个与此相关的问题吗?还是我必须发布另一个问题?问题是什么?