【问题标题】:ASP.NET MVC Controller Result return to viewASP.NET MVC 控制器结果返回查看
【发布时间】:2013-06-06 19:04:26
【问题描述】:

我正在使用 ASP MVC 和 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>

【问题讨论】:

  • 你遇到了什么问题?
  • @Matt Houser 警报没有出现 :( 抱歉,我什至不知道我为什么不写那个。
  • 您的点击事件是否触发?你的动作会被调用吗?这里有很多失败点。在管道的哪个阶段出现问题?
  • @user2094139:JavaScript 控制台中是否有错误? JavaScript 代码会被执行吗?如果是,它是否成功到达控制器操作?
  • 所以我相信我遇到的问题是它到达控制器操作,因为我在 JSonResult SendMessage 中放置了几个断点,在单击提交按钮后我从来没有打过这些断点。 ——

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


【解决方案1】:

很可能,您的$.getJSON 调用中的 URL 不正确。你有它相对于你当前正在查看的任何 URL。

尝试将该行更改为:

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

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

编辑:

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

$('sendMSG')

由于您是通过 id 搜索它,因此请使用:

$('#sendMSG')

【讨论】:

  • 所以我相信我遇到的问题是它到达控制器操作,因为我在 JSonResult SendMessage 中放置了几个断点,在单击提交按钮后我从来没有遇到过这些断点。
  • 很多浏览器都内置了调试工具。 Google Chrome 和 IE 是 F12 显示它们。使用网络跟踪器查看您的 JSON 调用试图到达的位置。一旦你看到了,那应该会让你知道哪里出了问题。
  • 应用程序配置不允许给定 URL。: 应用程序的设置不允许一个或多个给定 URL。它必须与网站 URL 或画布 URL 匹配,或者域必须是应用程序域之一的子域。 ping:1 Uncaught ReferenceError: $ is not defined SMSTest:36
  • 您是否在 HTML 中添加了包含 jQuery 的链接?
  • 老实说,我不明白你的意思.. 有什么我必须添加的标签吗?
【解决方案2】:

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

'/SMSTestController/SendMessage'

但是,正如马特所说的那样,更好的解决方案

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

另外,看看这个 Fiddle http://jsfiddle.net/Ukuyc/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 2019-04-11
    相关资源
    最近更新 更多