我已经编写了这个按钮,但它不能正常工作,它没有调用控制器文件中的 create HTTP 方法:
讲讲看:
@model IEnumerable<MyApplication.Models.Clients>
<div class="row">
<div class="col-md-4">
<form asp-action="Create" method="post">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label for="CODE" class="control-label">Code:</label>
<input name="CODE" class="form-control" />
</div>
<div class="form-group">
<label for="NAME" class="control-label">Name:</label>
<input name="NAME" class="form-control" />
</div>
<div class="form-group">
<input type="submit" value="Insert" class="btn btn-primary" />
</div>
</form>
</div>
</div>
<table class="table" id="Tabla4">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.CODE)
</th>
<th>
@Html.DisplayNameFor(model => model.NAME)
</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.CODE)
</td>
<td>
@Html.DisplayFor(modelItem => item.NAME)
</td>
<td>
</td>
</tr>
}
</tbody>
</table>
单击“插入”按钮后,它不会执行任何操作,我的 Create 方法甚至没有在控制器文件中调用(空参数)
public ActionResult Create([Bind] Clients clients)
{
try
{
if (ModelState.IsValid)
{
dbContext.InsertData(clients);
return RedirectToAction("Index");
}
return View(clients);
}
catch
{
return View();
}
}
一直在搜索并试图解决它,但似乎我做得不正确,我在这里迷失了方向。我应该纠正什么?
可以帮助我吗?
您的视图收到
MyApplication.Models.Clients
的集合,当您单击提交按钮时,您将 Clients
的集合发送到控制器。
因此,如果您想将
Clients
类型的对象从视图发送到控制器,您应该创建另一个接收 MyApplication.Models.Clients
模型的操作和视图,如下所示。
创建视图:
@model MyApplication.Models.Clients
<div class="row">
<div class="col-md-4">
<form asp-action="Create" method="post">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label for="CODE" class="control-label">Code:</label>
<input name="CODE" class="form-control" />
</div>
<div class="form-group">
<label for="NAME" class="control-label">Name:</label>
<input name="NAME" class="form-control" />
</div>
<div class="form-group">
<input type="submit" value="Insert" class="btn btn-primary" />
</div>
</form>
</div>
</div>
控制器:
[HttpGet]
public ActionResult Create()
{
return View();
}
[HttpPost]
public ActionResult Create(Clients clients)
{
try
{
if (ModelState.IsValid)
{
dbContext.InsertData(clients);
return RedirectToAction("Index");
}
return View(clients);
}
catch
{
return View();
}
}
我希望问题能得到解决。将属性 [HttpPost] 添加到控制器方法就可以了。如果也这样做了,请尝试添加 .cshtml 视图中未使用的剩余模型属性元素并保持隐藏。所以会绑定模型。
我的例子:如果文件未上传到输入,并单击按钮。这不是击中帖子方法。但当我将 .cshtml 中的表单内的元素添加为隐藏时,它就起作用了。我能够单击按钮并进入后控制器方法。