[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public static object GetBeneficiaryAccount()
{
ClsBeneficiaries obj = new ClsBeneficiaries();
var List = new List<ClsBeneficiaries>();
List = obj.GetAllBeneficiariesAccout();
var result = List.Select(a => new
{
Account_ID = a.Account_ID,
Name = a.Name,
});
return result;
}
我是mvc的新人。我在我的asp应用程序中使用了这个方法,但现在我想学习asp mvc。
所以任何人都可以帮助我,我可以在控制器中使用脚本方法以及如何从Ajax调用此方法?
答案 0 :(得分:0)
你可以使用JsonResult。
[HttpGet]
public JsonResult GetBeneficiaryAccount()
{
ClsBeneficiaries obj = new ClsBeneficiaries();
var List = new List<ClsBeneficiaries>();
List = obj.GetAllBeneficiariesAccout();
var result = List.Select(a => new
{
Account_ID = a.Account_ID,
Name = a.Name,
});
return Json(result, JsonRequestBehavior.AllowGet);
}
答案 1 :(得分:0)
为此,您需要创建一个.asmx
文件,添加新项目菜单
据我所知,您在mvc项目中调用asp.net asmx Web服务以实现向后兼容性。所以,如果你真的需要从asp.net mvc项目中调用.asmx
web服务,那么这就是你要做的步骤。
首先将路由条目添加到 App_Start - &gt; RouteConfig.cs 文件
routes.IgnoreRoute("{resource}.asmx/{*pathInfo}");
这将在asp.net mvc中的路由引擎中忽略以.asmx
结尾的路径。
接下来,转到web.config文件和System.Web
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
很好,现在如果您从浏览器调用.asmx
服务(在我的情况下是 webservice1.asmx ),您应该看到这样的响应;
如果您感到焦虑,请参阅我的WebMethod
[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public string HelloWorld()
{
return "Hello World";
}
现在你可以使用jQuery测试它,就像常规的 Ajax 调用一样,它应该可以工作;
<script>
$(function () {
$.get('/webservice1.asmx/HelloWorld', function (data) {
alert('');
alert(data);
});
alert('after');
});
</script>
是的,如果您首先看到之后,因为它是异步调用,请不要感到惊讶。
您无法从Controller调用WebMethod。如果您需要从控制器返回json,那么您只需通过HttpGet
修饰您的操作方法,然后返回JsonResult
[HttpGet]
public JsonResult GetBeneficiaryAccount()
{
ClsBeneficiaries obj = new ClsBeneficiaries();
var List = new List<ClsBeneficiaries>();
List = obj.GetAllBeneficiariesAccout();
var result = List.Select(a => new
{
Account_ID = a.Account_ID,
Name = a.Name,
});
return Json(result, JsonRequestBehavior.AllowGet);
}
现在,您只需使用jQuery调用它;
<script>
$(function () {
$.get('/YourControllerName/GetBeneficiaryAccount', function (data) {
alert(data);
//do something
});
});
</script>
由于您不熟悉MVC,我建议您遵循MVC解决方案,该解决方案只返回JSON数据。