jQuery .post方法正在发送空值。如何将实际值传递给控制器​​?

时间:2019-04-10 20:41:22

标签: c# jquery asp.net-mvc

我有一个适用于asp.net MVC中的编辑视图的控制器。我有一个动作链接,它将行ID发送给控制器,然后该控制器带回正确的行以在关联的视图中查看。

然后我在下面有一个局部视图。这还需要一个参数,以便从另一个表中获取关联数据。

我有一个Jquery .post调用,该调用在页面加载后运行。我可以发出警报并显示要发送给控制器的确切值。

   $(document).ready(function () {
        var url = "/Home/MmsAndNotes";
        var Uc = $("#Id").serialize();
        alert(Uc);
        $.post(url, {Id: Uc}, function (data) {
          alert("what is Uc now? " + uc); //just for testing
        });
    })

我也用这种方式。

$(document).ready(function () {
        var url = "/Home/MmsAndNotes";
        var Uc = $("#Id").val();
        alert(Uc);
        $.post(url, Uc, function (data) {

        });
    })

出现警报,并显示我想要的值。但是,.post调用运行时,它将发送一个空值。这是我的控制器。

 public ActionResult MmsAndNotes(string Id)
    {
        //Declare LogisticsVM for individual policy info
        LogisticsMMS_NotesVM model;
        if(uc == null)
        {
            return Content("uc is empty.");
        }

        int val = Convert.ToInt32(uc);

        using (Db db = new Db())
        {
            LogisticsMMS_NotesDTO dto = db.LogisticsMMS.Find(val);

            //confirm policy exists
            if (dto == null)
            {
                return Content("This policy cannot be found." + val);
            }

            model = new LogisticsMMS_NotesVM(dto);
        }

        return PartialView(model);
    }

它总是返回,因为uc为空。我再说一遍,当警报出现时。我得到正确的值发送给控制器。但是一旦发送,就会发生一些事情并将其转换为null。 HELPPPPP ..拜托..我对这个失去了主意。

2 个答案:

答案 0 :(得分:0)

我不知道为什么,但是将$ .post()调用更改为$ .ajax({})调用可以解决此问题。如您在上面看到的,我有$ .post呼叫。改用

 $.ajax({
            type: "POST",
            url: "/Home/MmsAndNotes",
            dataType: 'text',
            data: { Id: Uc }
        });

解决了。我认为Jquery的缩短呼叫以相同的方式工作。他们当然可以,但是这样做是它对我有用的唯一方法。

P.S。感谢泰勒(以上)的评论。

答案 1 :(得分:-1)

此解决方案应该可行:

    $(document).ready(function () {
            $.ajax({
        url: '/Home/MmsAndNotes',
        type: 'GET',
        dataType: "html",

        data: { uc : $("#Id").val() }, 
     success: function (result) { 
         code here
                               }
    });
        })

您需要验证$(“#Id”)。val()是否为空