c#MVC使用AJAX的最佳方式

时间:2012-05-29 15:13:11

标签: asp.net-mvc asp.net-mvc-3 razor

在进行AJAX调用方面,我们使用以下方法:

    $.ajax({
             type: "POST",
             async: false,
             url: '@Url.Action("CheckPhone", "Progg")',
             data: { input: WebPhoneNum
             },
             success: function (iReturn) {
                 if (iReturn == 0) {
                     alert(Phone Number must be in format (XXX) XXX-XXXX. Please Re-Enter');
                     submitval = false;
                 }
             },
             error: function (xhr, status, error) {
                 var err = eval("(" + xhr.responseText + ")"); // Boil the ASP.NET AJAX error down to JSON.                    
                 alert('Call to CheckPhone failed with error:  ' + err.Message); // display the error raised by the server
             }
         });

注意它如何调用控制器并返回一个值。我想知道是否有更好的方法来做到这一点。我知道.NET MVC内置了一些ajax调用,但找不到适合我在下面做的事情。我知道.NET MVC有一个带有超链接的ajax调用构建,但这不是我需要的。我只需要调用一个返回一些值的控制器。

感谢

2 个答案:

答案 0 :(得分:0)

你需要解决的只有一件事:

async: false

必须成为:

async: true

因为否则你没有做AJAX。您正在向冻结客户端浏览器的服务器发送同步请求。

除此之外,您似乎正在使用此AJAX请求进行一些远程验证。您可能会看一下内置的[Remote]属性,这可以避免编写所有这些代码。您需要做的就是装饰需要使用此属性验证的视图模型属性,然后通过包含正确的脚本启用不显眼的客户端验证。

答案 1 :(得分:0)

尝试使用ajax验证输入的格式? 我建议您了解数据注释以验证此类详细信息(请在提交表单上重新验证服务器,如同一个好的做法)

这是一个有用的教程http://www.asp.net/mvc/tutorials/older-versions/models-(data)/validation-with-the-data-annotation-validators-cs