ASP.NET MVC Controller Result返回视图

时间:2013-06-06 19:04:27

标签: javascript jquery json asp.net-mvc-4 asp.net-ajax

我在ASP MVC& amp; C#,以及我尝试做的事情类似于以下内容。

public JsonResult SendMessage(SMSTestViewModel model)
{
    if (//logic here)
    {
        string phonenumber = model.phone.ToString();
        string derp = string.Empty;
        //SMS.SendSMS(phonenumber, "testing heheheheh", derp);
        var result = new { Success = "True", Message = "Good Job" };
        return Json(result, JsonRequestBehavior.AllowGet);
    }
    var result = new { Success = "False", Message = "Didn't work" };
    return Json(result, JsonRequestBehavior.AllowGet);
}

这是我控制器中的代码块,现在我试图在我的视图中使用以下内容引用它

<p>Please enter your phone number</p>
 <table>
  <tr>
    <td>Phone Number</td>
    <td> <input id = "phone" type ="text" name= "phone" /></td>
</tr>
</table>
<input type="button" value="Submit" id="sendMSG">

<script>
 $('sendMSG').click(function(){
$.getJSON('SMSTestController/SendMessage', function (data) {
    alert(data.Success);
    alert(data.Message);
}); 
});
</script>

出于某种原因警报不会出现。这对我来说很困惑。 我是JSON,JQuery和Javascript的新手,所以任何帮助或建议都会非常感激。

由于

编辑:

将html代码块更改为以下内容:

<input type="button" value="Submit" id="sendMSG">

 <script>
$('#sendMSG').click(function () {
    $.getJSON('@Url.Action("SendMessage","SMSTestController")', function (data) {
        alert(data.Success);
        alert("test");
        alert(data.Message);
    }); 
});
 </script>

2 个答案:

答案 0 :(得分:2)

最有可能的是,$.getJSON来电中的网址不正确。相对于您当前正在查看的任何网址,您都拥有它。

尝试将该行更改为:

$.getJSON('@Url.Action("SendMessage", "SMSTestController")', function (data) {

这样,MVC会为您的操作生成一个绝对URL。

修改

你的按钮的jQuery选择器是错误的。

$('sendMSG')

由于您是通过ID搜索它,请使用:

$('#sendMSG')

答案 1 :(得分:1)

将网址更改为以下内容应该可以正常工作

'/SMSTestController/SendMessage'

然而,更好的解决方案是马特提到的

'@Url.Action("SendMessage", "SMSTestController")'

另外,请看一下这个小提琴http://jsfiddle.net/Ukuyc/