Asp.net mvc 控制器中两个视图之间的操作弹出通知

Asp.net mvc 控制器中两个视图之间的操作弹出通知,asp.net-mvc,razor,Asp.net Mvc,Razor,我有一个控制器,其中我有两个与场景相关的标准ActionResults:索引和详细信息 详细地说,我检查了有关用户身份的各种条件,并检查了他的个人资料中现有的可用信用额度。如果所有条件都满足,我将重定向到详细信息视图,并更新/添加一些记录。我想要的是,在有效重定向(当然还有更新/添加过程)之前,触发一个通知(比如:“嘿,用户X,你有xx个积分,完成时你将消耗yy个积分。你确定要继续吗?”。如果否,则保留当前索引视图,如果是,则转到详细信息视图,并在详细信息操作结果中执行所有更新/插入操作。 在索

我有一个控制器,其中我有两个与场景相关的标准ActionResults:索引和详细信息 详细地说,我检查了有关用户身份的各种条件,并检查了他的个人资料中现有的可用信用额度。如果所有条件都满足,我将重定向到详细信息视图,并更新/添加一些记录。我想要的是,在有效重定向(当然还有更新/添加过程)之前,触发一个通知(比如:“嘿,用户X,你有xx个积分,完成时你将消耗yy个积分。你确定要继续吗?”。如果否,则保留当前索引视图,如果是,则转到详细信息视图,并在详细信息操作结果中执行所有更新/插入操作。 在索引视图中,我使用标准ActionLink导航到详细视图:

@Html.ActionLink(" View this Candidate details ...", "Details", "Candidates", new { id = item.IdCV }, new { @class = "btn btn-default fa fa-link" })
控制器中的操作详细信息为:

    // GET: Candidates/Details/5
    // Restrict by role:
    //[Authorize(Roles = "Admin, Candidate, Employer")]
    public ActionResult Details(int? id)
    {
        if (User.Identity.IsAuthenticated)
        {
            //obtaining the user profile info
            var jobs = new Jobs();
            var currentuser = User.Identity.GetUserId();//UserManager.FindById(User.Identity.GetUserId());
            JobShopEntities db = new JobShopEntities();
            var TheUser = db.AspNetUsers.Where(u => u.Id == currentuser)
                         .Select(u => new
                         {
                             ID = u.Id,
                             Email = u.Email,
                             Username = u.UserName,
                             Surrname = u.Surname,
                             Name = u.Name,
                             Role = u.Role,
                             CreditBalance = u.CreditBalance
                         }).Single();

            var idul = TheUser.ID;
            var username = TheUser.Username;
            var name = TheUser.Name;
            var surrname = TheUser.Surrname;
            var credit = TheUser.CreditBalance;
            var CreditUsed = 5;
            var NewCredit = credit - CreditUsed; //This value I want to update in AspNetUsers.CreditBalance field 
            var role = TheUser.Role;
            var operatia = "Display CV detail";
            int? cvul = id;
            int? jobul = null;

            //testing the user
            if (role == 3)
            {
                //if role is ok, testing the credit balance
                if (credit > 10)
                {
                    if (id == null)
                    {
                        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
                    }
                    Candidate candidate = db.Candidate.Find(id);
                    if (candidate == null)
                    {
                        return HttpNotFound();
                    }
                    //update credits in AspNetUsers.CreditBalance
                    UpdateCredit(idul, username, NewCredit);

                    //save in audit journal CreditJournal.CreditsUsed
                    SaveAudit(operatia, idul, cvul, jobul, CreditUsed);
                    return View(candidate);
                }
                else
                {
                    //redirect to something
                    return RedirectToAction("NoCredit", "Jobs");
                }

            }
            else
            {
                return RedirectToAction("Index", "Home");
            }
        }
        else
        {
            return RedirectToAction("Login", "Account");
        }
    }
相关的更新和插入方法包括:

UpdateCredit(idul, username, NewCredit); 
以及:

在从主菜单进入创建视图之前,我也有类似的要求:

@Html.ActionLink("Add a new Job", "New", "Jobs")
在这里,我还检查了新ActionResult中(几乎)相同的条件(好的,这里是ActionResult的两种风格:New()和[HttpPost]New()

L.E

最后,我找到了一种简单的方法,但存在一些问题:

@ActionLink(“Detalii…”,“detaili…”,“Details”,“Candidates”,new{id=item.IdCV},new{onclick=“return confirm”(“查看候选人详细信息时,您将使用x可用的5个积分!
是否继续?”,@class=“btn btn default fa link”})

分别

@ActionLink(“新建作业”、“新建”、“作业”、“新建”{onclick=“return confirm('添加新作业时,您将消耗x可用的5个积分!
是否继续?')”)

对于这两种情况,我都需要一种格式化消息的方法(例如,我插入的
没有效果),并像在控制器中一样为信用注入消息文本值

无论如何,第一个示例是可行的,但第二个示例有一个问题:链接使用以下参数(出于未知原因)进行修改:

致:


长话短说,您希望在向
详细信息发送请求之前提示用户。这是一个简单的例子。@ibrahim主要是我想模仿的,除了我不想在pageload上使用,但是取消ActionLink按此处:我还想从细节中提取一些值(credit,CreditUsed),并显示JSON警报以继续代码。您可以去掉查询参数-请参阅
@Html.ActionLink("Add a new Job", "New", "Jobs")