【问题标题】:C# How to call MVC Controller function by using javascript or jqueryC#如何使用javascript或jquery调用MVC控制器函数
【发布时间】:2017-02-16 09:24:56
【问题描述】:

我的控制器上有这个:

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> DeleteUser(UserViewModel viewModel)
{
}

我的 cshtml 中有这个:

<input type="button" id="btnDelete" value="Delete" />

我的 js 文件中有这个:

$('#btnDelete').click(function (e) {

});

如何从 js 文件中调用控制器函数?

【问题讨论】:

  • 在您发布的表单中包含@Html.AntiForgeryToken()
  • @PrashanthBenny 如果 OP 似乎不知道如何首先发布到控制器或指定了正在使用的表单,那么这如何与特定的防伪问题重复?这个问题是怎么变成这样的?我确信它是某种重复,但据我所知,不是那个问题。 - 对不起,如果我错过了什么。
  • 上述问题的答案似乎也回答了这个问题。也许我错了...... :)
  • @PrashanthBenny 非常间接地作为其他问题的 OP 已经知道如何从 javascript 调用动作并且有一个完全不同的问题。假设这个问题的 OP 对 ajax 来说是新的并从 JavaScript 调用控制器,鉴于这个问题,标记的重复将不仅仅是压倒性的......只是说,更合适的重复将更符合 ►http://stackoverflow.com/questions/15162760/how-to-call-an-mvc-action-using-only-javascript
  • @Fran 但是这个人更有可能因为这个人[ValidateAntiForgeryToken] 而被打破,对吧?但问题似乎是另一种方式! Confused!:D

标签: javascript c# jquery asp.net-mvc asp.net-mvc-4


【解决方案1】:
$.post("Controller/CreateUser", dataToPost)
            .done(function(response, status, jqxhr){ 
                // this is the "success" callback
            })
            .fail(function(jqxhr, status, error){ 
                // this is the ""error"" callback
            });

var data = {
        username: $('#username').val().trim(),
        password: $('#password').val()
    };

$.ajax({
    type: "POST",
    url: "Controller/CreateUser",
    content: "application/json;",
    dataType: "json",
    data: JSON.stringify(data),
    success: function(d) {

    },
    error: function (xhr, textStatus, errorThrown) {

    }
});

ps:根据 UserViewModel 属性组合数据对象。

【讨论】:

  • 我遇到错误:POST localhost:56110/user/controller/DeleteUser
  • 我离开了控制器,因为我不知道你的控制器的名字。只需将其删除并输入正确的控制器名称
【解决方案2】:

在按钮内点击,执行ajax请求

$('#btnDelete').click(function (e) {
   $.ajax({
      type: "POST",
      url: 'controller/DeleteUser',
      dataType: "json",
      success: function(data){
        //html content
      },
    });
 }

【讨论】:

  • 为什么设置data:"Json"?也许你的意思是dataTypedataType 是您期望从服务器获得的数据类型。 data 属性是您将发送到服务器的数据。
  • 抱歉应该是数据类型
  • 我遇到错误:POST localhost:56110/user/controller/DeleteUser 404 (Not Found)
  • @Alexandru-IonutMihai dataType: json 不是 c# User 类。可以设置为:xml/html/script/json/jsonp/text。查看 Jquery ajax 函数以获取更多信息。
  • @Enix,你应该用你的controller名字替换controller
【解决方案3】:

使用 ajax post 方法很容易访问任何控制器方法。

在这里,我根据所选国家/地区使用 'RegionesController' 方法名称 'GetStates' 我也在这里传递 CountryId 根据此 ID 获取状态。

前:

function GetStates() {
    $.ajax({
        type: "POST",
        async: false,
        url: abp.appPath + 'Regiones/GetStates?CountryId=' + $("#ddlCountry").val(),
        success: function (result) {
           //return data or object
        },
        error: function (err) {
            abp.notify.info(err.statusText);
        }
    });
}

【讨论】:

    猜你喜欢
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    • 2013-07-18
    • 2019-10-25
    • 2013-12-15
    • 2017-08-22
    相关资源
    最近更新 更多