我想从表单中获取数据,但字段数量未知。 这就像一项调查。从数据库中获取的问题,计数可能会有所不同。
根据我从数据库中获取的数据,我使用
foreach
渲染我的 html,输入为 type='range'
我想知道如何以键值列表的格式获取控制器中的数据。
例如:
public class SurveyAnswer
{
public long QuestionId { get; set; }
public byte Value { get; set; }
}
我希望在我的操作中获得如下数据:
public IActionResult MyAction(List<SurveyAnswer> data)
{
// code...
}
根据您的问题,这里是使用 index 的示例。
SurveyAnswer.cs
public class SurveyAnswer
{
public string Title { get; set; }
public long QuestionId { get; set; }
public byte Value { get; set; }
public int Index { get; set; } // Index property to help with model binding
}
索引.cshtml
@model List<UnknownFields.Models.SurveyAnswer>
<form method="post" action="/SurveyAnswers/SubmitSurvey">
@for (int i = 0; i < Model.Count; i++)
{
<input type="hidden" name="data[@i].Index" value="@i" />
<input type="hidden" name="data[@i].QuestionId" value="@i" />
<label>@Model[i].Title</label>
<input type="range" name="data[@i].Value" value="50" min="0" max="100" />
<br />
}
<button type="submit">Submit</button>
</form>
控制器
[HttpPost]
public IActionResult SubmitSurvey(List<SurveyAnswer> data)
{
foreach (var answer in data)
{
// Access answer.QuestionId and answer.Value or other logic
}
return RedirectToAction("ThankYou");
}
如果您的问题有任何误解,请告诉我。