mvc 3 razor使用jquery调用服务器端函数
我正在使用此代码从服务器获取部分视图,将其放入div中
$.ajax( { type: "POST", url: "MyControler/MyAction", success: function (result) { $('#partialView').html(result); }, error: function (req, status, error) { alert("Coudn't load partial view"); } });
现在我想做同样的事情,但我会调用一个简单的方法返回一个字符串并将结果放在一个文本框中
$.ajax( { type: "POST", url: "MyControler/MyMethod", success: function (result) { $('#myTextBox').html(result); }, error: function (req, status, error) { alert("Coudn't load partial view"); } });
方法就是这样
public string MyMethod() { returning "hello"; }
显然它不起作用,但有没有办法让它工作? 是否有我应该用于方法的属性
提前致谢
PS:
从我在第一个答案中的红色我试过这个,但它不起作用
public ActionResult Hello() { return Content("Hi there!"); }
ajax调用有问题吗?
$.ajax( { type: "POST", url: "MyControler/Hello", success: function (result) { $('#myTextBox').html(result); }, error: function (req, status, error) { alert("Coudn't load partial view"); } });
PS
我想尝试一个干净的项目,并使用返回字符串的简单方法工作正常
因为它工作,我试图实现它到我的项目,但它似乎只能从global.asax文件中设置的起始页面工作任何想法我应该做什么,使其在每个页面中工作?
您正在进行HttpPost呼叫。 因此,请确保您的Action方法使用HttpPost
属性进行修饰。 也总是尝试使用Url.Action
HTML Helper方法来获取action方法的路径。
假设你在MMyControlerController
有Hello
Action方法,下面的代码应该可以工作。
$.ajax( { type: "POST", url: "@Url.Action("Hello","MyControler")", success: function (result) { alert("result from server "+result); $('#myTextBox').html(result); }, error: function (req, status, error) { alert("Coudn't load partial view"); } });
你的行动方法
[HttpPost] public ActionResult Hello() { return Content("This is String Content"); }
我想你应该使用以下
$('#myTextBox').attr('value',result);
代替
$('#myTextBox').html(result);
你想从该方法返回一个字符串,是的,但你想要的是一个返回字符串的ActionResult检查以下问题并在StackOverflow上回答。
在MVC中,如何返回字符串结果?
当您在虚拟目录或子域下运行时,最好使用Url.Action
方法。 Action方法将创建正确的Url。
除此之外,看起来你正在发布到网站,所以你有没有为你的行动添加HttpPost
属性?