我正在构建一个带有一堆文本框的 MVC 表单。但是,我的模型需要一个字符串列表。我想要做的是,当用户点击提交时,在表单发布之前,它会获取文本框中的所有值,将其添加到 List 并将其附加到模型以进行提交。我被困在我怎么能做到这一点?
我需要这样做的原因是我需要表单是动态的,因为字段数可以增长并且页面会适应它。我无法将各个字段硬编码到模型中,因为模型需要适应表单的长度。
到目前为止,这是我的代码:
的HTML
@using (Html.BeginForm(new { id = "feedbackForm" }))
{
<fieldset>
@foreach (Feedback_Num_Questions questionForm in FeedbackSurveyQuestions)
{
string textBoxID = "feedbackq";
questionNumberTextBoxes++;
textBoxID = textBoxID + questionNumberTextBoxes.ToString();
<input type="text" id="@textBoxID" />
}
<input type="text" id="txtAdditionalComments" />
<input type="submit" value="Create" name="btnFeedbackSubmit" id="btnSubmitFeedbackForm" />
</fieldset>
}
该模型:
public class PostCourseFeedbackModel
{
public List<string> responseList { get; set; }
public decimal pelID { get; set; }
public string employeeid { get; set; }
}
谢谢您的帮助!
更新:在收到 FLEM 的回复后,我对代码进行了一些修改。仍然不太有效,但希望有人能发现这个问题:
HTML:
@using (Html.BeginForm(new { id = "feedbackForm" }))
{
<fieldset>
@{
int i = 0;
foreach (Feedback_Num_Questions questionForm in FeedbackSurveyQuestions)
{
i++;
string textBoxID = "feedbackq" + i.ToString();
@Html.TextBoxFor(m => m.responseList[i], new { @id = textBoxID });
}
<input type="submit" value="Create" name="btnFeedbackSubmit" id="btnSubmitFeedbackForm" />
}
</fieldset>
}
模型保持不变...
更新 - 按照弗莱姆的要求,我正在发布我的行动。然而,这是一个准系统操作,因为我还没有编写我打算如何处理数据的代码......
[HttpPost]
public ActionResult PostCourseFeedback(PostCourseFeedbackModel feedback)
{
return RedirectToAction("FeedbackSubmitted", "Feedback", new { status = "success" });
}