ajax调用mvc控制器

时间:2016-04-11 20:10:43

标签: ajax asp.net-mvc

为什么这段代码不起作用?我收到" ok"但我看不到view1(view1未加载)。我想通过prop1管理视图。如果prop1的值=" 1"加载view1

Hier是我的控制者

[System.Web.Mvc.Route("Home/SubmitMyData/")]
        [System.Web.Http.HttpPost]
        public ActionResult SubmitMyData([FromBody]MyParamModel mydata)
        {


            if (mydata.Prop1.Equals("1"))
                return View("veiw1");
            else
                        return View("view2");


        }

        public class MyParamModel // #4
        {
            public string Prop1 { get; set; }
            public string Prop2 { get; set; }
        }

这是我的ajax电话

   $('#Buttonv').click(function () {

        var myData = {Prop1: "1", Prop2: ""}; // #1
        $.ajax({
            type: 'POST',
            data: myData, // #2
            url: '/Home/SubmitMyData',          
        })
           .success(function (data) {
               var output = "ok";

               $('#lblmessage').html(output);

           })
        .error(function (xhr, ajaxoption, thrownError) {
            $('#lblmessage').html("moshkelo" + xhr + "ajaxoption= " + ajaxoption + " throwerror=" + thrownError);
        });
        //return false;
    });

2 个答案:

答案 0 :(得分:0)

在您的javascript中,您忽略了服务器返回的HTML。尝试将其更改为...

       .success(function (data) {
           $('#lblmessage').html(data);
       })

根据documentationsuccess方法的第一个参数是服务器返回的数据。

答案 1 :(得分:0)

如果您从Controller返回视图,则需要确保在POST的success回调中实际使用HTML内容:

.success(function (data) {
     // data will contain your content
     $('#lblmessage').html(data);
 })

您之前使用的是output,它似乎没有在您的脚本中的任何位置定义。

此外,您可能需要检查要返回的视图的名称,因为return View("veiw1");似乎应该是return View("View1");的拼写错误。