从MVC控制器操作调用javascript

16 javascript asp.net-mvc

我可以从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)

  • 它在网页上显示`Callback()`. (2认同)