首页 > 解决方案 > 在 ASP.NET CORE MVC 项目中将 Javascript 值转换为 JSON

问题描述

我尝试了很多不同的解决方案,但我不明白为什么我的程序不起作用。我只想在我的控制器中取值 Javascript。

我的控制器

 public JsonResult TestFunction (string FName)
    {
        return Json(new
        {
            result = "Ok"
        });
    }

视图中的 Javascript

 @section scripts{


<script type="text/javascript" >



    $(document).ready( function() {
        $("#btnClick").click(function () {

            var f = {};
            f.data = JSON.stringify({FName: "FRANK" });
            f.type = "POST";
            f.contentType = "application/json; charset=utf-8";
            f.url = '@Url.Action("TestFunction", "Home")';
            f.success = function (data) {
                alert(f.data);

            };
            f.error = function (response) {
                alert("failed");

            };
            console.log(f.data);
            $.ajax(f);
        });

    });




</script>

}

和或完成 Html

我不明白我的错误在哪里。谢谢。

标签: javascriptc#asp.net-mvcasp.net-core

解决方案


对于application/jsonas contentType,请尝试以下步骤:

  1. 定义视图模型

    public class ViewModel
    {
        public string FName { get; set; }
    }
    
  2. 控制器动作

        [HttpPost]
    public JsonResult TestFunctionViewModel([FromBody]ViewModel vm)
    {
        return Json(new
        {
            result = "Ok"
        });
    }
    
  3. 要求

            var f = {};
        f.data = JSON.stringify({FName: "FRANK" });
        f.type = "POST";
        f.contentType = "application/json; charset=utf-8";
        f.url = '@Url.Action("TestFunctionViewModel", "Home")';
        f.success = function (data) {
            alert(f.data);
    
        };
        f.error = function (response) {
            alert("failed");
    
        };
        console.log(f.data);
        $.ajax(f);
    

    编辑

如果您需要string FName参数,请尝试以下步骤:

  1. 添加[FromBody]

    [HttpPost]
    public JsonResult TestFunction([FromBody]string FName)
    {
        return Json(new
        {
            result = "Ok"
        });
    }
    
  2. 要求

        var f = {};
        f.data = '"FNameTet"';
        f.dataType = "json",
        f.type = "POST";
        f.contentType = "application/json; charset=utf-8";
        f.url = '@Url.Action("TestFunction", "Home")';
        f.success = function (data) {
            alert(f.data);
    
        };
        f.error = function (response) {
            alert("failed");
    
        };
        console.log(f.data);
        $.ajax(f);
    

    注意'"FNameTet"'


推荐阅读