C# asp.net mvc post action post nothing
我的行动方法:C# asp.net mvc post action post nothing,c#,asp.net-mvc,C#,Asp.net Mvc,我的行动方法: [HttpPost, ActionName("Delete")] [RequiredPermissions(RequiredPermissionName, Operation.Delete)] public ActionResult DeleteConfirmed(User userWhoGone) { _db.Users.Remove(userWhoGone); _db.SaveChanges();
[HttpPost, ActionName("Delete")]
[RequiredPermissions(RequiredPermissionName, Operation.Delete)]
public ActionResult DeleteConfirmed(User userWhoGone)
{
_db.Users.Remove(userWhoGone);
_db.SaveChanges();
this.TempData["msg"] = "Deleted User Id " + userWhoGone.Id;
return RedirectToAction("Index");
}
Delete.cshtml
@model NewsMonitoringWeb.Database.Models.User
@{
ViewBag.Title = "User Delete";
<h2>User Delete</h2>
<h3>Are you sure you want to delete this user?</h3>
@Html.Partial("_PartialUser")
@using (Html.BeginForm()) {
<p>
<input type="submit" value="Delete" /> |
@Html.ActionLink("Back to List", "Index")
</p>
}
@model NewsMonitoringWeb.Database.Models.User
@{
ViewBag.Title = "User Delete";
<h2>User Delete</h2>
<h3>Are you sure you want to delete this user?</h3>
@Html.Partial("_PartialUser")
@using (Html.BeginForm()) {
<p>
@Html.HiddenFor(m => m.Id) @* <--- New input *@
<input type="submit" value="Delete" /> |
@Html.ActionLink("Back to List", "Index")
</p>
}
_PartialUser.cshtml
@model NewsMonitoringWeb.Database.Models.User
<fieldset>
<legend>User</legend>
<div class="display-label">User Role</div>
<div class="display-field">
@Html.DisplayFor(model => model.UserRole.Name)
</div>
<div class="display-label">FirstName</div>
<div class="display-field">
@Html.DisplayFor(model => model.FirstName)
</div>
<div class="display-label">LastName</div>
<div class="display-field">
@Html.DisplayFor(model => model.LastName)
</div>
<div class="display-label">Email</div>
<div class="display-field">
@Html.DisplayFor(model => model.Email)
</div>
<div class="display-label">Is Contributor</div>
<div class="display-field">
@Html.DisplayFor(model => model.IsContributor)
</div>
</fieldset>
我使用chrome检查发布的数据,发现这个方法没有向服务器发布任何内容
有什么建议吗?您目前根本没有发回任何内容。您的用户不在表单中 表单中唯一的东西是按钮和链接 您需要移动您的分部,使其位于表单中 现在看起来是这样的:
@model NewsMonitoringWeb.Database.Models.User
@{
ViewBag.Title = "User Delete";
<h2>User Delete</h2>
<h3>Are you sure you want to delete this user?</h3>
@using (Html.BeginForm()) {
@Html.Partial("_PartialUser")
<p>
<input type="submit" value="Delete" /> |
@Html.ActionLink("Back to List", "Index")
</p>
}
编辑
您需要将隐藏输入添加到包含用户ID的部分,或者将该部分保留在原来的位置,然后将隐藏输入放入表单中
然后,您需要更改操作以接受用户ID并在数据库上执行查找。您的表单没有可回发的值。您需要在表单中放置一些隐藏的输入值以生成用户,或者向表单中添加一个隐藏的用户id并更改post操作方法 后者是我的首选方法,如下所示:
[HttpPost, ActionName("Delete")]
[RequiredPermissions(RequiredPermissionName, Operation.Delete)]
public ActionResult DeleteConfirmed(int userIdWhoGone)
{
_db.Users.RemoveById(userIdWhoGone); // You may need to create this.
// Atlernatively, get the user by id then call 'Remove()
var user = _db.User.Find(userIdWhoGone);
_db.Users.Remove(user);
_db.SaveChanges();
this.TempData["msg"] = "Deleted User Id " + userIdWhoGone;
return RedirectToAction("Index");
}
Delete.cshtml
@model NewsMonitoringWeb.Database.Models.User
@{
ViewBag.Title = "User Delete";
<h2>User Delete</h2>
<h3>Are you sure you want to delete this user?</h3>
@Html.Partial("_PartialUser")
@using (Html.BeginForm()) {
<p>
<input type="submit" value="Delete" /> |
@Html.ActionLink("Back to List", "Index")
</p>
}
@model NewsMonitoringWeb.Database.Models.User
@{
ViewBag.Title = "User Delete";
<h2>User Delete</h2>
<h3>Are you sure you want to delete this user?</h3>
@Html.Partial("_PartialUser")
@using (Html.BeginForm()) {
<p>
@Html.HiddenFor(m => m.Id) @* <--- New input *@
<input type="submit" value="Delete" /> |
@Html.ActionLink("Back to List", "Index")
</p>
}
您可能需要提供视图的标记…是否在发布到方法时遇到问题?您能否向我们展示正在进行发布的表单代码以及如何解析用户参数?这将不起作用,因为局部视图只有显示元素。