2014-09-22 121 views
1

我正在试图标题说,从Controller返回Json消息后,它验证。从控制器返回Json数据到视图ASP.NET MVC

我做了一个断点,我知道代码在Controller端工作,并且我的JavaScript现在调用成功了ActionResult。如何在视图中显示该消息?

有两个按钮,戳记和戳出。如果用户在两次邮戳中,它应该得到一个消息,同样戳出来。我有两个ActionResults,除了一些消息和字符串更改外,它们都是indentical。

控制器:

[HttpPost] 
    public ActionResult CreateStamp(Stamping stampingmodel) 
    { 
     var validateMsg = ""; 
     stampingmodel.Timestamp = DateTime.Now; 
     stampingmodel.StampingType = "in"; 

     if (stampingmodel.User == null || ModelState.IsValid) 
     { 
      var idValidated = db.Users.Find(model.UserId); 

      if (idValidated != null) 
      { 
       var stamp = 
        db.Stampings.Where(s => s.UserId == stampingmodel.UserId) 
         .OrderByDescending(s => s.Timestamp) 
         .FirstOrDefault(); 

       if (stamp.StampingType == stampingmodel.StampingType) 
       { 
        if (stampingmodel.StampingType == "in") 
        { 
         validateMsg = "Stamped Twice In A Row!"; 
        } 
       } 

       else 
       { 
        if (stampingmodel.StampingType == "in") 
        { 
         validateMsg = "Stamped In, Welcome."; 
        } 
       } 
      } 

      db.Stampings.Add(stampingmodel); 
      db.SaveChanges(); 
     } 

     return Json(new {Message = validateMsg }); 

的JavaScript:

$(document).ready(function() { 

$("#stampInBtn").click(function() { 

    var userId = $("#userId").val(); 

    $.ajax({ 
     url: "ComeAndGo/CreateStamp", 
     type: "POST", 
     dataType: "json", 
     data: { 
      userId: userId, 
     } 
    }); 

}); 

查看:

<input type="text" id="idUser" class="form-control" /> 
    <br /> 
    <input type="submit" value="IN" id="stampInBtn" /> 

我当然查看里面更多的代码; divs,头部,身体,标题和脚本。但它可能有点不相关。

我应该怎么做才能成功显示这些消息?

问候。

+0

添加成功功能。 '.ajax({.....,成功:函数(数据){...'(其中数据的值将是服务器返回的内容) – 2014-09-22 11:13:07

+0

我不明白,请问您更具体吗? – Qvadriologic 2014-09-22 11:20:24

回答

1

添加成功功能,Ajax调用

$.ajax({ 
    url: "ComeAndGo/CreateStamp", 
    type: "POST", 
    dataType: "json", 
    data: { userId: userId }, 
    success: function(data) { 
    // data contains the value returned by the server 
    console.log(data); 
    }  
}); 

因此,如果控制器返回

return Json("This is a message"); 

data值将成为“这是一条消息”。请注意,返回值可以是复杂类型或局部视图

+0

所以我的消息应该写入数据变量? – Qvadriologic 2014-09-22 11:26:47

+0

因此,因为我的控制器做到了: return Json(new {Message = message}); JS上的数据将自动成为Controller上的Message变量? – Qvadriologic 2014-09-22 11:34:29

+0

我不确定你为什么使用'return Json(new {Message = validateMsg});'?它可以只是'return Json(validateMsg);'然后数据的值将是'validateMsg',但是对于你的代码,我怀疑你需要使用'data.Message'来获取'validateMsg'的值 – 2014-09-22 11:39:15

0

您将得到$("#userId")的值,但输入的ID为idUser

试着让你的输入:

<input type="text" id="userId" class="form-control" /> 

而且,因为它似乎是你只传递用户ID在您的文章,并没有别的这将是一个好主意,为您的Stamping模型结构。

+0

改变了它,仍然没有工作... – Qvadriologic 2014-09-22 11:19:26

+0

当你运行你的代码时,你的断点是什么? – 2014-09-22 11:28:37

+0

在控制器端是的,不知道js虽然 – Qvadriologic 2014-09-22 11:30:03

0

更改您的javascript代码如下:

  $(document).ready(function() { 

     $("#stampInBtn").click(function() { 

     var userId = $("#userId").val(); 

      $.ajax({ 
       url: "ComeAndGo/CreateStamp", 
       type: "POST", 
       dataType: "json", 
       data: { 
        userId: userId, 
       }, 
       success: function(data) { 
       var objData= jQuery.parseJSON(data); 
       alert(objData.Message); 
       }, 
       error: function (request, status, error) { 
        alert(request.responseText); 
       } 

      }); 

     }); 
    }); 
+0

我实现它,仍然无法正常工作,无论我点击这些按钮多少次,屏幕上都不会显示任何内容 – Qvadriologic 2014-09-22 11:25:22

+0

您的调试器是否适用于控制器? – 2014-09-22 11:29:18

+0

是的,它击中了actionresults,并且我得到的json消息是正确的,但我只需要在视图上显示它,以便用户可以看到更改! – Qvadriologic 2014-09-22 11:30:51

相关问题