【问题标题】:how to approve or reject record on user side on admin's approval in asp.net mvc 5如何在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>

【问题讨论】:

    标签: c# jquery .net sql-server asp.net-mvc


    【解决方案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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-29
      • 2018-02-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多