我可以从MVC控制器操作(而不是从视图页面)调用javascript函数并获取返回值吗?怎么样?
我需要使用像这里的javascript 从代码(.cs)向服务器发出请求(但这是aspx页面)
function getInitData() {
var code; code = 'return {' ;
code += 'me: API.getProfiles({uids: API.getVariable({key: 1280}), fields: "photo"})[0]';
code += '};'
VK.Api.call('execute', { 'code': code }, onGetInitData);
}
Run Code Online (Sandbox Code Playgroud)
Jas*_*ell 16
对于刚刚使用标准表单提交(非AJAX)的人,还有另一种方法可以在完成操作后触发一些Javascript/JQuery代码.
首先,在Model上创建一个字符串属性.
public class MyModel
{
public string JavascriptToRun { get; set;}
}
Run Code Online (Sandbox Code Playgroud)
现在,在视图的Javascript中绑定到您的新模型属性:
<script type="text/javascript">
@Model.JavascriptToRun
</script>
Run Code Online (Sandbox Code Playgroud)
现在,在您的视图中,创建一个Javascript函数,它可以执行您需要执行的操作:
<script type="text/javascript">
@Model.JavascriptToRun
function ShowErrorPopup() {
alert('Sorry, we could not process your order.');
}
</script>
Run Code Online (Sandbox Code Playgroud)
最后,在你的控制器动作中,你需要调用这个新的Javascript函数:
[HttpPost]
public ActionResult PurchaseCart(MyModel model)
{
// Do something useful
...
if (success == false)
{
model.JavascriptToRun= "ShowErrorPopup()";
return View(model);
}
else
return RedirectToAction("Success");
}
Run Code Online (Sandbox Code Playgroud)
Rus*_*Cam 10
您可以从JavaScript函数调用控制器操作,但反之亦然.服务器如何知道要定位的客户端?服务器只响应请求.
在发送到客户端的响应中从JavaScript调用控制器操作(使用jQuery JavaScript库)的示例.
$.ajax({
type: "POST",
url: "/Controller/Action", // the URL of the controller action method
data: null, // optional data
success: function(result) {
// do something with result
},
error : function(req, status, error) {
// do something with error
}
});
Run Code Online (Sandbox Code Playgroud)
小智 10
是的,使用Javascript结果肯定是可能的:
return JavaScript("Callback()");
Run Code Online (Sandbox Code Playgroud)
您的视图应引用Javascript:
function Callback(){
// do something where you can call an action method in controller to pass some data via AJAX() request
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
108000 次 |
| 最近记录: |