C# 输入数据未通过对象返回

C# 输入数据未通过对象返回,c#,asp.net-mvc,visual-studio,C#,Asp.net Mvc,Visual Studio,我正在将输入数据从.cshtml页面传递到action方法 这是我的.cshtml页面: @model passingdata <form asp-controller="Home" method="post" asp-action="About" > <button class="btn-danger" type="submit" value="Submit"></button> <div class="form-group">

我正在将输入数据从.cshtml页面传递到action方法

这是我的.cshtml页面:

@model passingdata

<form asp-controller="Home"  method="post" asp-action="About" >
   <button class="btn-danger" type="submit" value="Submit"></button>
   <div class="form-group">
      <label>
        <input asp-for="date" placeholder="Date" class="col-md-8" />
      </label>
      <label>
        Select from these Four Classes
        <input type="radio" name="class" asp-for="classselect1" id="classselect1" value="classselect1" class="col-md-4" /> <p> @Model.classname1</p>
        <input type="radio" name="class" asp-for="classselect2" id="classselect2" value="classselect2" class="col-md-4" /> <p> @Model.classname2</p>
        <input type="radio" name="class" asp-for="classselect3" id="classselect3" value="classselect3" class="col-md-4" /> <p> @Model.classname3</p>
        <input type="radio" name="class" asp-for="classselect4" id="classselect4" value="classselect4" class="col-md-4" /> <p> @Model.classname4</p>
      </label>
  </div>
</form> 
来自radiobutton的输入数据(如日期和布尔值)没有通过包含这些变量的类的对象。
请在这方面帮助我。

如果我没记错的话,每个单选按钮的Name属性就是.net MVC将值映射到您的模型的方式

在本例中,您的所有名称都是“class”,这本质上意味着您有一个名为class的表单字段,其中包含4个选项

我建议使用html助手类,因为它们会自动为您创建正确的html。这篇文章的答案应该有助于:

如果您不想使用帮助器,请记住,提交表单时,发布的数据基于每个表单字段的名称。Net在后台为您序列化了模型,但实际上您只是以“?prop1=val1&prop2=val2”格式提交数据

更新 我想也许我应该澄清一点,为什么你所做的并没有达到你的预期

当您通过表单发布或放置数据时,它会将输入字段(文本框、单选按钮、复选框等)作为查询字符串参数传递或作为正文的一部分传递。单选按钮的工作方式与其他输入类型略有不同。对于单选按钮,有多个输入元素,但其中只有一个有效。这是通过使用name属性来处理的。在您的例子中,所有的名称都是“class”,这意味着传递给服务器的唯一内容是一个“?class={val}”(val是选择了哪个单选按钮的值)

如果passingdata模型有一个名为“class”的属性,则会填充该属性。如果您的目标是用不同的值填充所有4个classselect属性,则需要每个单选按钮的名称不同。但如果每个名称只有一个单选按钮,则每个属性只能有1个值。需要多个同名单选按钮才能有多个值(每个属性只能选择其中一个值)


希望这能澄清错误,让你走上正确的方向。

请发布
passingdata
课程代码。
[HttpPost]
public IActionResult About(passingdata p)
{
    ViewData["Message"] = "Your application description page.";
    Teacher.classselect1 = p.classselect1;
    Teacher.classselect2 = p.classselect2;
    Teacher.classselect3 = p.classselect3;
    Teacher.classselect4 = p.classselect4;
    Teacher.date = p.date;
    return View();
}