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