【问题标题】:Prevent loading page阻止加载页面
【发布时间】:2017-06-16 08:51:29
【问题描述】:

我有一个控制器创建并返回触发警报的内容。 它加载一个空页面的问题。我怎样才能防止它加载一个空页面并停留在当前视图中并且什么都不做,只是弹出警报。

我真正想要的是在用户创建新数据之前,它会首先验证diseaseID 是否已经存在于特定的assessmentID,当结果为空时,它只会弹出一个警报并执行没有。但在这里我只是想让alert() 正常工作。

控制器:

public ActionResult CreateDisease(int? diseaseID,int? assessmentID, DiseaseList diseaselist)
    {
        diseaselist.DiseaseID = diseaseID;
        diseaselist.AssessmentID = assessmentID;
        db.DiseaseLists.Add(diseaselist);
        db.SaveChanges();
        return Content("<script language='javascript' type='text/javascript'>alert('Item already exist');</script>");

    }

【问题讨论】:

  • 您可以将消息包装在ViewBag 或视图模型中,然后如果消息存在,则在客户端代码中使用alert 和JS。
  • @TetsuyaYamamoto 我编辑了内容。
  • 与其在 GET 方法中返回Content,不如尝试使用return View("Disease") 来显示相同​​的视图。客户端验证可以使用带有DiseaseID 作为参数的 AJAX 进行处理,将其传递给控制器​​操作,如果存在则返回验证消息。

标签: asp.net-mvc


【解决方案1】:

您不需要将脚本作为内容从控制器返回,只需将值返回为 json,它将告诉您该项目已经存在,并基于该 true 或 false 值显示来自客户端 js 的警报。

您的控制器代码将如下所示

diseaseModel.DiseaseID = diseaseID;
diseaseModel.AssessmentID = assessmentID;
diseaseModel.AlreadyExist = true;

return Json(diseaseModel);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    • 2011-01-13
    • 2021-11-01
    • 2019-07-13
    相关资源
    最近更新 更多