从MVC ActionResult表单显示jQuery Dialog

时间:2012-02-22 22:32:16

标签: c# json asp.net-mvc-3 jquery

我还在尝试使用MVC3。我还没有找到一个很好的资源来帮助我入门。我想知道当用户输入邮政编码时是否可以使用返回字符串的web服务?

我使用json但在ASP.NET Web应用程序中使用了web服务。我能够根据用户输入的邮政编码返回特许经营权。我想知道我是否可以在MVC中做同样的事情?

如何将以下内容转换为在MVC中工作:

    // Html code in my Test.aspx page
    <input id="txtZipCode" type="text" onchange="javscript:changed(this.value)" />
    <div id="Result"></div>

这是我的javascript代码:

    function changed(value) {
    $.ajax({
        type: "POST",
        url: "Test.aspx/GetData",
        data: "{'zipcode': '" + value + "'}",
        contentType: "application/json;charset=utf-8",
        dataType: "json",
        success: function (msg) {
            // Replace the div's content with the page method's return.
            $("#Result").text(msg.d);
        },
        error: function () {
            $("#Result").text('Failed');
        }
    });
}

这是我背后的代码:

[System.Web.Services.WebMethod]
    public static string GetData(string zipcode)
    {
        srvc.bbcs tmp = new srvc.bbcs (); // consume test webservice
        string code = tmp.GetFETerrByZip(zipcode);
        return code;
    }

2 个答案:

答案 0 :(得分:1)

非常相似,您必须使用HttpPost属性修饰您的Action,以便接受POST请求:

[HttpPost]
public ActionResult GetData(string zipcode)
{
 //return DateTime.Now.ToShortDateString();
        srvc.BudgetBlindsCommercialSolutions tmp = new srvc.BudgetBlindsCommercialSolutions();
        string code = tmp.GetFETerrByZip(zipcode);
        return Json(new {code= code});
}

您的jquery呼叫将是:

    function changed(value) {
    $.ajax({
        type: "POST",
        url: "YourController/GetData",
        data: "{'zipcode': '" + value + "'}",
        contentType: "application/json;charset=utf-8",
        dataType: "json",
        success: function (msg) {
            // Replace the div's content with the page method's return.
            $("#Result").text(msg.d);
        },
        error: function () {
            $("#Result").text('Failed');
        }
    });
}

答案 1 :(得分:0)

是的,你会像你刚刚展示的那样做。但是,我不会在onchange事件上执行此操作,因为这意味着每次输入数字时都会发送请求,这可能会让人感到困惑。或许在onblur上。