2015-10-23 56 views
0

我做了一個批准或拒絕來自用戶註冊表的註冊請求的方法。批准/拒絕方法不工作在asp.net mvc

當用戶提交表單時,請求變爲掛起狀態,然後管理員有權拒絕或批准請求;但是我的方法無法正常工作,因爲沒有任何事情發生。

當我單擊拒絕或批准按鈕時,應用程序只刷新頁面。

任何人都可以告訴我我的代碼有什麼問題嗎?代碼片段如下。

這是批准控制器

public class ApprovedRegistrationController :BaseAdminController 
{ 
    // GET: Admin/ApproveRegistration 
    public ActionResult Index(string Status) 
    { ViewBag.Status = (Status == null ? "P" : Status); 
     if (Status == null) 
     { var register = objBs.registerBs.GetALL().Where(x => x.Approved == "P").ToList(); 
      return View(register); } 
     else 
     { var register = objBs.registerBs.GetALL().Where(x => x.Approved == Status).ToList(); 
      return View(register); }} 

    public ActionResult Approve(int id) 
    { try 
     { var myRegistration = objBs.registerBs.GetByID(id); 
      myRegistration.Approved = "A"; 
      objBs.registerBs.Update(myRegistration); 
      TempData["Msg"] = "Approved Successfully"; 
      return RedirectToAction("Index"); } 
     catch (Exception e1) 
     { TempData["Msg"] = "Approved Failed: " + e1.Message; 
      return RedirectToAction("Index");}} 

    public ActionResult Reject(int id) 
    {try 
     { var myRegistration = objBs.registerBs.GetByID(id); 
      myRegistration.Approved = "R"; 
      objBs.registerBs.Update(myRegistration); 
      TempData["Msg"] = "Rejected Successfully"; 
      return RedirectToAction("Index");} 
     catch (Exception e1) 
     { TempData["Msg"] = "Rejection Failed: " + e1.Message; 
      return RedirectToAction("Index");}}} 

登記批准或拒絕視圖

@model IEnumerable<XtechWebsite.Models.Registration> 

    @{ 
    ViewBag.Title = "Index";} 

    <h2>Index</h2> 

    <script> 
     function ConfirmApprove() { 

     return confirm('Are u sure to accept it?'); 

    } 
    function ConfirmReject() { 

     return confirm('Are u sure to reject it?'); 
    } 


</script> 
<h3>Manage Registration<h3> 
@if (TempData["Msg"] != null) 
{<h3 @TempData["Msg"].ToString()</h3> 
} 
<h4>@if (ViewBag.Status == "P") 
    {<b>@Html.ActionLink("Pending Requests", "Index", new { Status = "P" })</b> 
    } 
    else 
    { 

     @Html.ActionLink("Pending Requests", "Index", new { Status = "P" }) 
    } 
     @if (ViewBag.Status == "A") 
     { 
      <b>@Html.ActionLink("Approved Requests", "Index", new { Status = "A" })</b> 
     } 
     else 
     { 

      @Html.ActionLink("Approved Requests", "Index", new { Status = "A" }) 
     } 
    @if (ViewBag.Status == "R") 
    { 
     <b>@Html.ActionLink("Rejected Requests", "Index", new { Status = "R" })</b> 
    } 
    else 
    { 

     @Html.ActionLink("Rejected Requests", "Index", new { Status = "R" }) 
    } 

</h4 
<table class="table"> 
    <tr> 
     <th>Approve/Reject</th> 
     <th> 
      @Html.DisplayNameFor(model => model.First_Name) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.Last_Name) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.Department_Name) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.Team_Name) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.Select_Members) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.Approved) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.Email_ID) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.Competition.CategoryName) 
     </th> 
     <th></th> 
    </tr> 
@foreach (var item in Model) { 
    <tr> 
     <td> 
      @Html.ActionLink("Approve", "Approve", new { id = item.Registration_ID }, new { onclick = "return ConfirmApprove();" }) | 
      @Html.ActionLink("Reject", "Reject", new { id = item.Registration_ID }, new { onclick = "return ConfirmReject();" }) 

     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.First_Name) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Last_Name) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Department_Name) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Team_Name) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Select_Members) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Approved) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Email_ID) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Competition.CategoryName) 
     </td> 
    </tr> } 
</table> 
**Admin Base Contoller** 

    public class BaseAdminController : Controller 
    { 
     // GET: Admin/BaseAdmin 

     protected AdminBs objBs; 
     public BaseAdminController() 
    { 
     objBs = new AdminBs(); 
    } 
    } 

registerbs類是在批准控制器中使用

public class RegisterBs 
    { 
    private RegisterDb objDb; 

     public RegisterBs() 
     { 

      objDb = new RegisterDb(); 
     } 
     public IEnumerable<Registration> GetALL() 
     { 

      return objDb.GetALL(); 

     } 
     public Registration GetByID(int Id) 
     { 
      return objDb.GetByID(Id); 

     } 
     public void Insert(Registration registration) 
     { 
      objDb.Insert(registration); 


     } 
     public void Delete(int Id) 
     { 
      objDb.Delete(Id); 

     } 
     public void Update(Registration registration) 
     { 
      objDb.Update(registration); 

     } 

    } 
<b>Registration db class<b> 

    public class RegisterDb 
    { 

     private XtechContext db; 

     public RegisterDb() 
     { 

      db= new XtechContext(); 
     } 
     public IEnumerable<Registration> GetALL() 
     { 

      return db.Registrations.ToList(); 

    } 
     public Registration GetByID(int Id) 
     { 
      return db.Registrations.Find(Id); 

     } 
     public void Insert(Registration registration) 
     { 
      db.Registrations.Add(registration); 
      Save(); 

     } 
     public void Delete(int Id) 
     { 
      Registration registration = db.Registrations.Find(Id); 
      db.Registrations.Remove(registration); 
      Save(); 

     } 
     public void Update(Registration registration) 
     { 
      db.Entry(registration).State = EntityState.Modified; 

     } 
     public void Save() 
     { 
      db.SaveChanges(); 
     } 
    } 

this is the interface pic then you easily understand it

+0

不清楚你真正的問題是什麼,但是你有一個'Index(字符串狀態)'方法,當它們被重定向到時,你的'Approve()'或'Reject 'Index()'方法 –

+0

你可以添加'RegisterDb.Update'的實現嗎? – Guillaume

+0

yes public void Update(Registration registration) db.Entry(registration).State = EntityState.Modified; } – Mashhad

回答

2

在上下文中不要調用SaveChanges,因爲您的修改不會保留到數據庫。

您可以在更新方法中添加對Save()的調用。

+0

的圖片非常感謝你,它的工作原理:) – Mashhad