在 MVC 中使用来自 JavaScript 的字符串类型参数调用操作

calling action with string type parameter from JavaScript in MVC

我的控制器中有以下动作:

public ActionResult ShowContactTel(string tel)
{
    return PartialView("ContactInfoView", tel);
}

我通过 JavaScript 调用上述操作,如下所示:(通过单击按钮触发)

function ShowTel(){
    var e="@Model.TelShow";
    $.get("ViewProfile/ShowContactTel", e).then(
        function (r) {
            $('#divTel').innerHTML = r;
        });
}

但是 action 的输入参数接收到空值(通过设置断点),因此 return 不需要的输出。

备注一:

我为 ShowTel() 函数尝试了以下代码,但结果没有改变:

var str = "@Model.TelShow";
$.ajax({
    type: 'GET',
    url: '@Url.Content("~/ViewProfile/ShowContactTel")',
    data: str,
    success: function (dd) {
        $('#divTel').innerHTML = dd;
    }
});

var str = "@Model.TelShow";
$.ajax({
    url: "ViewProfile/ShowContactTel",
    type: 'GET',
    data: str
}).then(function (r) {
    $('#divTel').innerHTML = r;
});

我也试过 type: 'POST' 但还是不行。

备注2:

ShowTel() 函数中使用 debugger 命令,我发现 @Model.TelShow 具有真实值。

有什么问题?

您当前的代码(第一种方法)正在传递 e 变量的值作为 $.get 调用的数据参数。 jQuery $.get 方法会将其作为查询字符串值发送。因此,您的代码正在进行如下 URL.

的 get 调用
/ViewProfile/howContactTel?testValue

假设 testValue 是变量 e

的值

您的操作参数名称是 tel。因此,发送一个带有 属性 和该名称的 js 对象。

同时使用 jquery html 方法来更新 div.

的内部 html
$.get("/ViewProfile/ShowContactTel", { tel: e })
 .then(function (r){
       $('#divTel').html(r);
  });

我还建议使用 Url 辅助方法来为操作方法生成正确的 URLs。

var url = "@Url.Action("ShowContactTel","ViewProfile");
$.get(url, { tel: e }).then(function (r){
    $('#divTel').html(r);
});