【发布时间】:2017-06-20 09:14:33
【问题描述】:
场景:
用户可以输入他/她的姓名、年级和导师姓名。然后需要输入主题标记。主题表单字段是动态的,也就是说,一个用户可能有 5 个主题,而另一个用户可能只有 3 个。
当前修复:
目前,我已经用意大利面条代码修复了这个问题,在按钮点击事件上使用了 jQuery 的append。并将表单数据作为 FormCollection 传递,然后将 formcollection 更改为模型。
我需要什么:
我需要使用模型而不是表单集合。也就是说,我需要将表单数据作为模型而不是表单集合传递。
这是我所做的:
型号:
public class StudentModel
{
public string Name { get; set; }
public string Grade { get; set; }
public string Tutor { get; set; }
public List<SubjectModel> Subjects { get; set; }
}
public class SubjectModel
{
public string Subject { get; set; }
}
控制器:
public class HomeController : Controller
{
....
[HttpPost]
public ActionResult Index(FormCollection form)
{
var subjects = form["Subject"].Split(',');
var modelsubjects = new List<SubjectModel>();
foreach (var subject in subjects)
{
modelsubjects.Add(new SubjectModel() { Subject = subject });
}
var model = new StudentModel();
model.Name = form["Name"];
model.Grade = form["Grade"];
model.Tutor = form["Tutor"];
model.Subjects = modelsubjects;
//Here I get the model from a dynamic form
return View();
}
}
查看:
<div class="jumbotron">
@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
<div class="row">
<div class="col-sm-3">
<label for="Name">Name</label>
<input type="text" id="Name" name="Name" />
</div>
<div class="col-sm-3">
<label for="Grade">Grade</label>
<input type="text" id="Grade" name="Grade" />
</div>
<div class="col-sm-3">
<label for="Tutor">Tutor</label>
<input type="text" id="Tutor" name="Tutor" />
</div>
<div class="col-sm-1">
<a class="btn btn-primary" id="addSubject">Add Subject</a>
</div>
<div class="col-sm-1">
<input class="btn btn-primary" type="submit" value="Submit" />
</div>
</div>
<div id="subjectInfo" style="padding-top:10px;">
</div>
}
</div>
<script type="text/javascript">
var count = 0;
$("#addSubject").click(function () {
$("#subjectInfo").append("<div class='row'>" +
"<div class='col-sm-8'>" +
"<label for='Subject_" + count + "'>Subject " + count + "</label>" +
"<input type='text' name='Subject' id='Subject_" + count + "' />" +
"</div>" +
"</div>");
count++;
});
</script>
任何建议都会有所帮助。谢谢。
【问题讨论】:
标签: javascript c# jquery asp.net-mvc forms