从控制器返回Json数据到查看ASP.NET MVC

时间:2014-09-22 11:09:18

标签: c# javascript asp.net asp.net-mvc json

我正在尝试,因为标题说在验证后将一个Json消息从Controller返回到View。

我已经创建了一个断点,我知道代码可以从Controller端运行,而我的JavaScript现在调用ActionResult成功了。如何在视图中显示该消息?

有两个按钮,印章和印章。如果用户加盖两次,则应该收到一条消息,同时标记为冲突。除了一些消息和字符串更改外,我有两个ActionResults。

控制器:

[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" />

我在View中有更多代码; div,head,body,title和scripts。但它可能有点无关紧要。

如何成功展示这些讯息?

问候。

3 个答案:

答案 0 :(得分: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的值将是&#34;这是一条消息&#34; 。请注意,返回值可以是复杂类型或部分视图

答案 1 :(得分:0)

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

尝试输入:

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

同样提供Stamping模型结构也是一个好主意,因为您似乎只在帖子中传递了用户ID而没有其他内容。

答案 2 :(得分: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);
                }

            });

        });
    });