C# 无法使用弹出窗体将新数据创建到数据库中
我试图创建一个弹出系统,在数据库中创建新数据。当我在索引视图中单击“创建”时,我会发现一个弹出表单。但当我单击“保存”进行数据保存时,它不会起任何作用。突然,它开始工作并将数据保存到数据库中。但它只发生过一次。但我不明白为什么它不能顺利运行 这是我的密码: 模型 控制器:C# 无法使用弹出窗体将新数据创建到数据库中,c#,jquery,ajax,asp.net-core,asp.net-core-mvc,C#,Jquery,Ajax,Asp.net Core,Asp.net Core Mvc,我试图创建一个弹出系统,在数据库中创建新数据。当我在索引视图中单击“创建”时,我会发现一个弹出表单。但当我单击“保存”进行数据保存时,它不会起任何作用。突然,它开始工作并将数据保存到数据库中。但它只发生过一次。但我不明白为什么它不能顺利运行 这是我的密码: 模型 控制器: namespace Practise.Controllers { public class CategoryController : Controller { private Applicati
namespace Practise.Controllers
{
public class CategoryController : Controller
{
private ApplicationDbContext _db;
public CategoryController(ApplicationDbContext db) //input parameter
{
_db = db;
}
public IActionResult Index()
{
return View(_db.Category.ToList());
}
[HttpGet]
public IActionResult Create()
{
Category ca = new Category();
return PartialView("_CreatePartial", ca);
//return View();
}
[HttpPost]
public IActionResult Create(Category ca)
{
_db.Category.Add(ca);
_db.SaveChanges();
return PartialView("_CreatePartial", ca);
}
}
}
Index.cshtml
@model IEnumerable<Practise.Models.Category>
@{
ViewData["Title"] = "Index";
}
<div id="PlaceHolderHere"></div>
<button type="button" class="btn btn-primary" data-toggle="ajax-model" data-target="#addEmployee" data-url="@Url.Action("Create")">Create</button>
</br></br>
<table class="table">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.Id)
</th>
<th>
@Html.DisplayNameFor(model => model.CategoryName)
</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Id)
</td>
<td>
@Html.DisplayFor(modelItem => item.CategoryName)
</td>
<td>
<partial name="_ButtonPartial" model="@item.Id" />
</td>
</tr>
}
</tbody>
</table>
@section scripts{
<script src="//cdn.jsdelivr.net/npm/alertifyjs@1.13.1/build/alertify.min.js"></script>
<script type="text/javascript">
$(function(){
var save = '@TempData["save"]'
if (save!= null) {
alertify.success(save);
}
})
</script>
}
我的输出:
当我按下“保存”按钮时,我希望它将数据保存到DB。但它不起作用。我必须更改类似“保存数据”的内容:
public IActionResult Create()
{
//Category ca = new Category();
//return PartialView("_CreatePartial", ca);
return View();
}
[HttpPost]
public IActionResult Create(Category ca)
{
_db.Category.Add(ca);
_db.SaveChanges();
return RedirectToAction("Index");
}
创建视图:
@model Practise.Models.Category
@{
ViewData["Title"] = "Create";
}
<h1>Create</h1>
<div class="modal fade" id="#addEmployee">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="#addEmployeeLabel">Add Category</h4>
<button type="button" class="close" data-dismiss="modal">
<span>x</span>
</button>
</div>
<div class="modal-body">
<form asp-action="Create" method="post">
<div class="form-group">
<label asp-for="CategoryName"> </label>
<input asp-for="CategoryName" class="form-control" />
<span asp-validation-for="CategoryName" class="text-danger"></span>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-dismiss="modal">Close</button>
@*<button type="button" class="btn btn-primary" data-save="modal">Save</button>*@
<input type="submit" class="btn btn-primary" value="Submit"/>
</div>
</form>
</div>
</div>
</div>
</div>
@model practice.Models.Category
@{
ViewData[“标题”]=“创建”;
}
创造
添加类别
x
接近
@*拯救*@
然后成功保存数据。根据您的描述和代码,它在我这边运行良好。你能告诉我这个类别的Id是否是自动缩放的吗?如果id不是自动缩放,则意味着它将始终使用相同的id 0。@BrandoZhang我不理解“自动缩放”的含义。我将给您提供代码来检查这一点。请告诉我我将给您提供什么代码来检查这一点。抱歉,我的意思是id已在sql server中启用了标识。
$(function () {
var PlaceHolderElement = $('#PlaceHolderHere');
$('button[data-toggle="ajax-model"]').click(function (event) {
var url = $(this).data('url');
$.get(url).done(function (data) {
PlaceHolderElement.html(data);
PlaceHolderElement.find('.modal').modal('show');
})
})
PlaceHolderElement.on('click', '[data-save="modal"]', function (event) {
var form = $(this).parents('.modal').find('form');
var actionUrl = form.attr('action');
var sendData = form.serialize();
$.post(actionUrl, sendData).done(function (data) {
PlaceHolderElement.find('.modal').modal('hide');
})
})
})
public IActionResult Create()
{
//Category ca = new Category();
//return PartialView("_CreatePartial", ca);
return View();
}
[HttpPost]
public IActionResult Create(Category ca)
{
_db.Category.Add(ca);
_db.SaveChanges();
return RedirectToAction("Index");
}
@model Practise.Models.Category
@{
ViewData["Title"] = "Create";
}
<h1>Create</h1>
<div class="modal fade" id="#addEmployee">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="#addEmployeeLabel">Add Category</h4>
<button type="button" class="close" data-dismiss="modal">
<span>x</span>
</button>
</div>
<div class="modal-body">
<form asp-action="Create" method="post">
<div class="form-group">
<label asp-for="CategoryName"> </label>
<input asp-for="CategoryName" class="form-control" />
<span asp-validation-for="CategoryName" class="text-danger"></span>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-dismiss="modal">Close</button>
@*<button type="button" class="btn btn-primary" data-save="modal">Save</button>*@
<input type="submit" class="btn btn-primary" value="Submit"/>
</div>
</form>
</div>
</div>
</div>
</div>