如何在asp.net mvc 5中批准或拒绝管理员批准的用户端记录
Posted
技术标签:
【中文标题】如何在asp.net mvc 5中批准或拒绝管理员批准的用户端记录【英文标题】:how to approve or reject record on user side on admin's approval in asp.net mvc 5 【发布时间】:2019-03-31 21:28:39 【问题描述】:我是 asp.net 和 MVC 的初学者。我想从管理员那里批准或拒绝记录,如果单击批准按钮 从管理员端,只有该记录将显示在用户端,否则不会。我已将 IsShow db 列作为数据库中的 bit 数据类型,并基于此我想要批准或拒绝记录。任何人都可以帮我解决这个问题,我尝试了以下事情,如果我用 Jquery 或纯 c# 代码来做这件事。我搜索了这个,但没有得到满意的答案
My Model
public partial class UserComments
public int Id get; set;
public string Name get; set;
public string PhoneNumber get; set;
public string Email get; set;
public string Comment get; set;
public string Path get; set;
public Nullable<bool> IsShow get; set;
我在管理端的控制器方法,用于批准和拒绝的管理视图完成
public ActionResult Index()
return View(db.UserComments.ToList().OrderByDescending(c => c.Id));
从用户端显示用户视图的我的控制器方法
public ActionResult Gandhiji(int? id)
ViewBag.user = db.UserComments.Where(c => c.Id == 1).OrderBy(c => c.Id).ToList();
return View("Gandhiji");
我要显示已批准记录的用户侧视图
@
var Users = (IEnumerable<UserComments>)ViewBag.user;
@foreach (var item in Users)
<div class="col-sm-6 col-xs-12">
<div class="panel panel-default text-center">
@*<div class="panel-body EApic" style="background: url(/Pictures/@p.ImagPath) no-repeat; background-size:cover;">*@
<div class="panel-body EApic" id="imagediv" style="background: url(/Pictures/@item.Path) no-repeat; background-size:cover;">
<div class="EAtext">
@html.Raw(item.Name)
<br />
@Html.Raw(item.Comment)
</div>
</div>
@*closing divs of row*@
</div>
</div>
</div>
管理侧视图
@foreach (var item in Model)
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.PhoneNumber)
</td>
<td>
@Html.DisplayFor(modelItem => item.Email)
</td>
<td>
@Html.DisplayFor(modelItem => item.Comment)
</td>
<td>
<img src="@item.Path" />
</td>
<td>
<a href="#" id="show" data-id="@item.Id" class="btn btn-info">Show</a> |
<a href="#" id="hide" data-id="@item.Id" class="btn btn-primary">Hide</a>
</td>
</tr>
</table>
<script>
$(function ()
("#show").click(function ()
$('#imagediv').html("");
$('#imagediv').load('@Url.Action("Gandhiji", "Home")');
);
</script>
【问题讨论】:
【参考方案1】:批准记录是指任何列,例如 isApproved 值,将其从 false 变为 true。您需要根据该记录的 id 更新表。
有几种方法可以解决此问题。您可以在附加新实例之前分离旧对象
public ActionResult Edit(User user)
if (ModelState.IsValid)
var OldInsObj = db.Users.Find(user.UserId);
DateTime UsersDateCreated = OldInsObj.UsersDateCreated;
user.UsersDateCreated = UsersDateCreated;
user.UsersDateModified = DateTime.Now;
db.Entry(OldInsObj).State = EntityState.Detached;
db.Entry(user).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
您可以更新从数据库中检索到的实体实例。
public ActionResult Edit(int userId)
var user = db.Users.Find(userId);
if (TryUpdateModel(user))
user.UsersDateCreated = UsersDateCreated;
user.UsersDateModified = DateTime.Now;
db.SaveChanges();
return RedirectToAction("Index");
或者您可以使用 Automapper 将用户实例的值复制到 OldInsObj 实例。
public ActionResult Edit(User user)
if (ModelState.IsValid)
var OldInsObj = db.Users.Find(user.UserId);
DateTime UsersDateCreated = OldInsObj.UsersDateCreated;
OldInsObj = Mapper.Map(user);
OldInsObj.UsersDateCreated = UsersDateCreated;
OldInsObj.UsersDateModified = DateTime.Now;
db.SaveChanges();
return RedirectToAction("Index");
如果您在批准记录的同一视图中,并且批准后您希望在同一页面上显示消息,您也可以返回 json。
【讨论】:
以上是关于如何在asp.net mvc 5中批准或拒绝管理员批准的用户端记录的主要内容,如果未能解决你的问题,请参考以下文章
403 - 禁止:访问被拒绝。 ASP.Net MVC [重复]
如何在 ASP.NET Core 5 MVC (.NET 5) 中获取记录的用户数据?
IIS Express 在调试 ASP.NET MVC 时出现拒绝访问错误
csharp ASP.NET MVC ActionFilter允许或拒绝具有可选子网掩码的IPv4地址。用于AppHarbor或任何其他服务器解决方案