显示MVC ActionResult表单中的jQuery对话框
本文关键字:jQuery 对话框 表单 MVC ActionResult 显示 | 更新日期: 2023-09-27 18:25:41
在试验MVC3时,我的脚还是湿的。我还没有找到一个好的资源让我开始。我想知道,当用户输入完邮政编码后,我是否可以使用一个返回字符串的Web服务?
我使用了一个使用json的web服务,但使用的是ASP.NET 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;
}
这很相似,您必须用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');
}
});
}
是的,您可以按照刚才显示的方式进行操作。然而,我不会在onchange事件上执行此操作,因为这意味着每次键入数字时都会发送一个请求,这可能会让人感到困惑。也许是在onblur上。