【问题标题】:How To construct a object in JS which corresponds to an object in C# [closed]如何在JS中构造一个与C#中的对象相对应的对象[关闭]
【发布时间】:2018-10-04 12:18:54
【问题描述】:

我使用 .Net Web API,我想在 C# 中获取我的对象的结构并将其发送到前面,以便它可以构造与后面完全相同的对象。

但我不知道如何在 C# 中获取对象的确切结构(属性的结构和名称)

例如一个对象就是这种对象

public class{
  public int a;
  private string b;
  private anAnotherObject c;
  private List<otherObjects> d;
}

【问题讨论】:

  • 为什么要只有私有成员变量?
  • 这是一个对象的例子,成员可以是私有的也可以是公共的,这无关紧要

标签: javascript c# asp.net api web


【解决方案1】:

首先为什么你有private 成员?

假设它们是否公开。然后您可以使用 Javascript 序列化器将您的对象序列化为 json 并将其发送到 html 或View

使用 ajax 调用,您可以发送 json,该 json 将在您的操作method 上作为对象接收

  $.ajax({url:url,
          data:{j:dataModelOnJson},...})

})

【讨论】:

    【解决方案2】:

    你可以通过以下方式进行

    下面是我的课

      public class MyVM
        {
            public int ID {get;set;}
            public string Name { get; set; }
        }
    

    这是我的操作,我的操作是 MVC 控制器操作,这可以是您的 api 操作。这里期望类对象。

     public ActionResult Create(MyVM createVM)
    {
    ///Create Entry
    }
    

    现在,当您使用 jquery 拨打电话时,您可以这样做

    CreateEntry 将在您的按钮单击事件中调用。并且有一个名为 CreateModel 的变量,它是您的类的副本,您通过从文本框中获取值来从 js 传递值。

    function CreateEntry()
    {
    var _id = $("#txtId").val();
    var _Name = $("#txtName").val();
    var CreateModel = {
               ID : _id,
           Name  : _Name
            }
    var url=""MyAPI/Create"
    $.ajax({
                type: "POST",
                headers: headers,
                url: url,
                data: {
                    createVM: CreateModel //Action Parameter name and variable which will map with class value.
                },
                success: function (data) {
                    alert("Save Success");
                },
                error: function (xhr) {
                    ErrorRosterMessage();
                }
            });
    }
    

    这将自动映射到您的操作类名称及其值。

    【讨论】:

    • 是的,它就是这样工作的,但我必须为我在后面的所有对象创建一个模型。有没有一种方法可以在 c# 中获取对象的实际格式?像public class MyVM { public int ID {get;set;} public string Name { get; set; } public MyObject o {get; set;} public int other {get; set; } } MyVM.getProperties(); 会返回一个列表 => int , string, MyObject {int , st
    猜你喜欢
    • 2023-03-13
    • 2021-12-07
    • 1970-01-01
    • 2019-09-12
    • 2017-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-01
    相关资源
    最近更新 更多