拆分逗号以将多行插入数据库(ASP.NET MVC)
Split Comma to Insert Multiple Row into Database (ASP.NET MVC)
我有一个 table 具有以下属性:id、学校名称、学生姓名。我想插入新项目,如下所示:
学校名称:小学(Select列表)
学生姓名:A、B、C、D(文本框)
加入日期:2020 年 1 月 1 日
然后 table 个条目看起来像:
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; }
}
CreateController.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");
}
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
将表单值 post 传递给 Controller
方法。您可以在文本框中强制执行某种规则,以接受在 space.
之后包含 ,
的字符串
您的 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");
}
我有一个 table 具有以下属性:id、学校名称、学生姓名。我想插入新项目,如下所示:
学校名称:小学(Select列表)
学生姓名:A、B、C、D(文本框)
加入日期:2020 年 1 月 1 日
然后 table 个条目看起来像:
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; }
}
CreateController.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");
}
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
将表单值 post 传递给 Controller
方法。您可以在文本框中强制执行某种规则,以接受在 space.
,
的字符串
您的 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");
}