[英]Split Comma to Insert Multiple Row into Database (ASP.NET MVC)
我有一個具有以下屬性的表:id、學校名稱、學生姓名。 我想插入新項目,如下所示:
學校名稱:小學(選擇列表)
學生姓名 : A, B, C, D (TextBox)
加入日期 : 1/1/2020
然后表條目如下所示:
id | school_name | student_name | join_date
----+-------------------+---------------+----------------
1 | Elementary School | A | 1/1/2020
2 | Elementary School | B | 1/1/2020
3 | Elementary School | C | 1/1/2020
4 | Elementary School | D | 1/1/2020
模型 studentdb.cs
public partial class studentdb
{
public int id { get; set; }
public string school_name { get; set; }
public string student_name { get; set; }
public DateTime join_date { get; set; }
}
創建控制器.cs
[HttpPost]
public ActionResult CreateStudent(studentdb Student)
{
string str = Student.studentdb;
string[] splitstr = str.Split(',');
foreach(string s in splitstr)
{
db.studentdb.Add(Student);
}
db.SaveChanges();
return RedirectToAction("Index", "Create");
}
創建.cshtml
<form class="form-horizontal" method="post" action="CreateStudent">
<div><a href="#" id="addNew">Add New</a></div>
<table class="table table-striped">
<tr>
<td>School Name</td>
<td>
<select class="form-control" name="school_name">
<option>Elemtary School</option>
<option>Junior High School</option>
</select>
</td>
</tr>
<tr>
<td>Name</td>
<td><input type="text" class="form-control" name="student_name" required></td>
</tr>
<tr>
<td>Join Date</td>
<td>
<div class="input-group">
<div class="input-group-addon">
<i class="fa fa-calendar"></i>
</div>
<input type="text" class="form-control pull-right" name="join_date" required>
</div>
</td>
</tr>
</table>
<div class="box-footer">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</form>
我應該為這個控制器做什么? 謝謝
以這種方式在控制器中綁定模型
[HttpPost]
public ActionResult CreateStudent(Classroom roomVm)
{
string str = roomVm.student_name;
string[] studentNames= str.Split(',');
foreach(string s in studentNames)
{ var student = new Student();
student.student_name =s;
student.school_name=roomVm.school_name;
student.join_date=roomVm.join_date;
db.studentDbSet.Add(student);
}
db.SaveChanges();
return RedirectToAction("Index", "Create");
}
好的,作為替代方案,您可以使用AJAX
將表單值發布到Controller
方法。 您可以在文本框上強制執行某種規則以接受包含,
空格后的字符串。
您的View
將如下所示:
<div><a href="#" id="addNew">Add New</a></div>
<table class="table table-striped">
<tr>
<td>School Name</td>
<td>
<select class="form-control" name="school_name" id="ddl_school_name">
<option>Elemtary School</option>
<option>Junior High School</option>
</select>
</td>
</tr>
<tr>
<td>Name</td>
<td><input type="text" class="form-control" id="s_name" name="student_name" required></td>
</tr>
<tr>
<td>Join Date</td>
<td>
<div class="input-group">
<div class="input-group-addon">
<i class="fa fa-calendar"></i>
</div>
<input type="text" class="form-control pull-right" id="j_date" name="join_date" required>
</div>
</td>
</tr>
</table>
<div class="box-footer">
<button type="button" class="btn btn-primary" onclick="SaveForm()">Submit</button>
</div>
<script>
function SaveForm() {
var schoolname = $("#ddl_school_name").find(':selected').text();
var studentname= $("#s_name").val();
var joindate= $("#j_date").val();
var json = {
schoolname: schoolname ,
studentname: studentname,
joindate: joindate
};
if (studentname== "" || joindate== "") {
alert("Missing fields");
return false;
}
$.ajax({
type: "post",
dataType: "json",
data: {"json": JSON.stringify(json)},,
url: "@Url.Action("CreateStudent","Create")",
success: function (result) {
alert("Inserted student data");
},
error:function(result){
alert("Could not insert student data");
}
});
}
</script>
您的Controller
方法如下所示:
using System.Web.Script.Serialization;
[HttpPost]
public ActionResult CreateStudent(string json)
{
var serializer = new JavaScriptSerializer();
dynamic jsondata = serializer.Deserialize(json, typeof(object));
//Get your variables here from AJAX call
var schoolname= jsondata["schoolname"];
var studentname= jsondata["studentname"];
var joindate= jsondata["joindate"];
studentdb student=new studentdb();
student.school_name=schoolname;
student.join_date=Convert.ToDateTime(joindate);
string[] splitstr = studentname.Split(',');
foreach(string s in splitstr)
{
student.student_name=s;
db.studentdb.Add(student);
}
db.SaveChanges();
return RedirectToAction("Index", "Create");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.