【问题标题】:How to show message or alert when record insertion success of fail in the controller在控制器中记录插入成功失败时如何显示消息或警报
【发布时间】:2016-03-30 04:13:45
【问题描述】:

在我的_Layout.cshtml 页面中,有一个文本框允许用户输入他/她的电子邮件地址(这是用于新闻通讯)。如果输入的电子邮件地址存在,则不会插入数据库,如果不存在则插入数据库.同时,如果没有插入我想显示一条错误消息,如果插入我想显示成功消息。这就是我插入数据库的方式,

public ActionResult getNewsLetterMail(string N_id, string N_EmailAdd)
    {
        Session["Ealert"] = null;
        Random random = new Random();
        int idONe = random.Next(99, 999);
        int idTwo = random.Next(999, 9999);
        string middle = "menuka";
        string fullID = idONe.ToString() + middle + idTwo.ToString();
        var N_ID = fullID;
        var N_Email = N_EmailAdd;
        TourCenterDBEntities NewsLetterEntities = new TourCenterDBEntities();
        var existing = NewsLetterEntities.News_Letter.Where(l => l.N_Email == N_EmailAdd);
        Debug.WriteLine(existing.Count());
        if (existing.Count() == 0)
        {
            News_Letter NewsLetterDetails = new News_Letter();
            NewsLetterDetails.N_id = N_ID;
            NewsLetterDetails.N_Email = N_Email;
            NewsLetterEntities.News_Letter.Add(NewsLetterDetails);
            NewsLetterEntities.SaveChanges();
            //want to send success text
        }
        else
        {
            //want to send error text                  
        }
        return Json(new { });
    }

如果成功或错误,它会返回到相同的_Layout.csthml 页面。 我该怎么做。希望你能帮忙。

【问题讨论】:

标签: c# asp.net-mvc database


【解决方案1】:

你可以使用。返回内容。

if (existing.Count() == 0)
    {
        News_Letter NewsLetterDetails = new News_Letter();
        NewsLetterDetails.N_id = N_ID;
        NewsLetterDetails.N_Email = N_Email;
        NewsLetterEntities.News_Letter.Add(NewsLetterDetails);
        NewsLetterEntities.SaveChanges();

        //return Content("Your information saved successfully");
        return new JavascriptResult { Script = "alert('Your information saved successfully');" };
    }
    else
    {
        //return Content("Already exist. Please choose another.");
        return new JavascriptResult { Script = "alert('Your information saved successfully');" };                  
    }

【讨论】:

  • 那么如何在视图中检索它
  • 您可以使用 JavascriptResult 向您的用户显示警报。
  • 警报可以,但是如果我想向视图发送文本并显示该文本,我该怎么做
  • 如果你想返回一个纯字符串然后使用我注释掉的内容。您也可以查看此 QA。 stackoverflow.com/questions/553936/…
【解决方案2】:
public ActionResult getNewsLetterMail(string N_id, string N_EmailAdd)
{
    Session["Ealert"] = null;
    Random random = new Random();
    int idONe = random.Next(99, 999);
    int idTwo = random.Next(999, 9999);
    string middle = "menuka";
    string fullID = idONe.ToString() + middle + idTwo.ToString();
    var N_ID = fullID;
    var N_Email = N_EmailAdd;
    TourCenterDBEntities NewsLetterEntities = new TourCenterDBEntities();
    var existing = NewsLetterEntities.News_Letter.Where(l => l.N_Email == N_EmailAdd);
    Debug.WriteLine(existing.Count());
    string myMessage="";
    if (existing.Count() == 0)
    {
        News_Letter NewsLetterDetails = new News_Letter();
        NewsLetterDetails.N_id = N_ID;
        NewsLetterDetails.N_Email = N_Email;
        NewsLetterEntities.News_Letter.Add(NewsLetterDetails);
        NewsLetterEntities.SaveChanges();
        myMessage="success";
    }
    else
    {
        myMessage="failed";                  
    }
    return Json(myMessage, JsonRequestBehavior.AllowGet);
}

在你看来。

$.post('@Url.Action("getNewsLetterMail", "yourControllerName")', { N_id: N_id, N_EmailAdd: N_EmailAdd }).done(function (data) {
 if (data == "success") {
                alert("Success!");                    
 }
 if( data== "failed")  {
                alert("Failed!");                    
 }
}

【讨论】:

  • 我应该在 中执行视图部分吗
  • 当您返回 Json() 时,您明确告诉 MVC 不要使用视图,而是提供序列化的 JSON 数据。因此,如果你想在一个简单的视图中显示,只需返回 View() 并在 TempData[] 的帮助下,你可以显示任何你想要的消息。
【解决方案3】:

我没有经验,但我会尝试这样的事情: 在我的视图模型中,我会放 字符串信息 然后在我看来

 @Html.DisplayFor(m=>m.info)

在控制器中

if(existing){info="success"}

您必须将信息传递给控制器​​中的视图模型

【讨论】:

    【解决方案4】:
    public ActionResult getNewsLetterMail(string N_id, string N_EmailAdd)
    {
        Session["Ealert"] = null;
        Random random = new Random();
        int idONe = random.Next(99, 999);
        int idTwo = random.Next(999, 9999);
        string middle = "menuka";
        string fullID = idONe.ToString() + middle + idTwo.ToString();
        var N_ID = fullID;
        var N_Email = N_EmailAdd;
        TourCenterDBEntities NewsLetterEntities = new TourCenterDBEntities();
        var existing = NewsLetterEntities.News_Letter.Where(l => l.N_Email == N_EmailAdd);
        Debug.WriteLine(existing.Count());
        string myMessage="";
        if (existing.Count() == 0)
        {
            News_Letter NewsLetterDetails = new News_Letter();
            NewsLetterDetails.N_id = N_ID;
            NewsLetterDetails.N_Email = N_Email;
            NewsLetterEntities.News_Letter.Add(NewsLetterDetails);
            NewsLetterEntities.SaveChanges();
            myMessage="success!";
        }
        else
        {
            myMessage="Failed!";                  
        }
        return Json(myMessage, JsonRequestBehavior.AllowGet);
    }
    

    在 Views 中,您可以添加 jquery 来显示消息。以下是在视图中检索消息的示例。您可以相应地编辑表单中的名称。

    `<script type="text/javascript">
      $(document).ready(function () {
       $("#yourForm").submit(function (e) {
          e.preventDefault();
            var valid = $("#yourForm").valid();
            if (valid) {
               $.ajax({
                url: "/getNewsLetterMail",
                type: "POST",
                data: {
                       Name: $("#N_id").val(),
                       Email: $("#N_EmailAdd").val(),
                        },
                        success: function (data) {
                            alert(data);
                            reset();
                        }
                    });
                }
            });
     });
    </script>'
    

    【讨论】:

    • 如何在视图中检索
    猜你喜欢
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-11
    • 2011-12-25
    • 2018-02-19
    • 1970-01-01
    • 2016-09-27
    相关资源
    最近更新 更多