2012-02-22 51 views
0

我仍然在試用MVC3的腳步。我還沒有找到一個好的資源來讓我開始。我想知道如果我可以使用一個web服務,當用戶輸入一個郵政編碼時返回一個字符串?從MVC ActionResult表單顯示jQuery對話框

我已經使用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; 
    } 

回答

1

這是非常相似的,你將不得不裝飾與HttpPost屬性的動作,所以你可以接受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'); 
     } 
    }); 
} 
+0

感謝您指點我正確的方向!我幾乎可以工作。我的jQuery不斷返回我的錯誤消息,並且在調試模式下,我的控制器中的代碼永遠不會被擊中。我試過使用JsonResult而不是ActionResult和其他各種嘗試。對此有何建議? – thatstevedude 2012-02-23 00:23:39

+0

我發現使用螢火蟲,我的jQuery返回404錯誤,因爲它找不到「MyController/GetData」.... – thatstevedude 2012-02-23 00:38:40

+0

我在我的控制器名稱之前添加了正斜槓,一切都很完美! (url:'/ YourController/GetData') – thatstevedude 2012-02-23 16:40:08

0

是的,你會完全像你剛纔展示的那樣。然而,我不會在onchange事件中這樣做,因爲這意味着每次輸入一個數字時都會發送一個請求,這可能會引起混淆。也許在onblur上。

+0

我用Google搜索的區別而且將會使用'onblur'。感謝您的建議! – thatstevedude 2012-02-23 00:39:45