Xero API C#asp.net不会将用户输入保存到Xero联系人中的字段

问题描述

我正在编写一个应用程序,该应用程序需要用户输入才能为连接的组织的xero创建新联系人 联系人。我设法做到了,这样当您单击“创建联系人”时,它会显示我的联系方式[联系方式] [1]

我已经使用了一些代码添加了一些代码。 API调用发布主要人员和联系人的数据。但是,其余的详细信息(例如地址和电话)未保存,请问您能否提供帮助。我对开发很陌生。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
using KompleteMe.Models;
using KompleteMe.Utilities;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore.Migrations.Internal;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Xero.NetStandard.OAuth2.Api;
using Xero.NetStandard.OAuth2.Client;
using Xero.NetStandard.OAuth2.Config;
using Xero.NetStandard.OAuth2.Model.Accounting;
using Xero.NetStandard.OAuth2.Token;

namespace KompleteMe.Controllers
{
    public class ContactsInfo : Controller
    {
        private readonly ILogger<XeroAuthorizationController> _logger;
        private readonly IOptions<XeroConfiguration> XeroConfig;
        private readonly IHttpClientFactory httpClientFactory;

        public ContactsInfo(IOptions<XeroConfiguration> XeroConfig,IHttpClientFactory httpClientFactory,ILogger<XeroAuthorizationController> logger)
        {
            _logger = logger;
            this.XeroConfig = XeroConfig;
            this.httpClientFactory = httpClientFactory;
        }

        // GET: /ContactsInfo/
        public ActionResult Index()
        {

            return View();
        }

        // GET: /ContactsInfo#Create
        [HttpGet]
        public IActionResult Create()
        {
            var contact = new ContactModel();
            return View(contact);
        }

        // POST: /ContactsInfo#Create
        [HttpPost]
        public async Task<ActionResult> Create(ContactModel model)
        {
            var xeroToken = TokenUtilities.GetStoredToken();
            var utcTimeNow = DateTime.UtcNow;

            if (utcTimeNow > xeroToken.ExpiresAtUtc)
            {
                var client = new XeroClient(XeroConfig.Value,httpClientFactory);
                xeroToken = (XeroOAuth2Token)await client.RefreshAccesstokenAsync(xeroToken);
                TokenUtilities.Storetoken(xeroToken);
            }

            string accesstoken = xeroToken.Accesstoken;
            string xeroTenantId = xeroToken.Tenants[0].TenantId.ToString();
            var contactp = new ContactPerson();
            var contact = new Contact();
            var phone = new Phone();
            var address = new Address();
            contact.Name = model.Name;
            contact.FirstName=model.FirstName;
            contact.LastName = model.LastName;
            contact.EmailAddress = model.EmailAddress;
            //Contact person .
            contactp.FirstName = model.PersonFirstName;
            contactp.LastName = model.PersonLastName;
            contactp.EmailAddress = model.PersonEmailAddress;
            phone.PhoneNumber = model.PhoneNumber;
            phone.PhoneCountryCode = model.PhoneCountryCode;
            address.AddressLine1 = model.AddressLine1;
            address.City = model.City;
            address.PostalCode = model.PostalCode;
           // contact.Website = model.Website;
            contact.ContactPersons  = new List<ContactPerson>();
            contact.ContactPersons.Add(contactp);
            contact.Taxnumber = model.Taxnumber;
            contact.Phones = new List<Phone>();
            contact.Phones.Add(phone);

            contact.Addresses = new List<Address>();
            contact.Addresses.Add(address);

            var contacts = new Contacts();
            
            contacts._Contacts = new List<Contact>() { contact };

            var AccountingApi = new AccountingApi();
            var response = await AccountingApi.CreateContactsAsync(accesstoken,xeroTenantId,contacts);

            return RedirectToAction("Index","ContactsInfo");
        }
    }
}



  using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.Linq;
    using System.Threading.Tasks;
    using RestSharp.Validation;
    
    namespace KompleteMe.Models
    {
        public class ContactModel
        {
          
            [required(ErrorMessage = "Name is required")]
            public string Name { get; set; }
            [required(ErrorMessage = "Firstname is required")]
            public string FirstName { get; set; }
            [required(ErrorMessage ="Lastname is required")]
            public string LastName { get; set; }
            [required(ErrorMessage = "Email is required")]
            public string EmailAddress { get; set; }
            [required(ErrorMessage = "Firstname is required")]
            public string PersonFirstName{ get; set; }
            [required(ErrorMessage = "Lasttname is required")]
            public string PersonLastName { get; set; }
            [required(ErrorMessage = "Email is required")]
            public string PersonEmailAddress { get; set; }
            [required(ErrorMessage = "tax is required")]
            public string Taxnumber { get; set; }
            [required(ErrorMessage = "phone is required")]
            public string PhoneNumber { get; set; }
    
            [required(ErrorMessage = "phonecode is required")]
            public string PhoneCountryCode { get; set; }
            [required(ErrorMessage = "addressline1 is required")]
            public string AddressLine1 { get; set; }
            [required(ErrorMessage = "city is required")]
            public string City { get; set; }
            [required(ErrorMessage = "postalcode is required")]
            public string PostalCode { get; set; }
            public string Website { get; set; }
        }
    }

 

@model ContactModel
@{
    ViewData["Title"] = "Create";
}

<h1>Create</h1>

<h4>Contact</h4>
<hr />
<form asp-action="Create">

    <div class="row">
        <div class="col-md-4">
            <div class="form-group">
                <label asp-for="Name" class="control-label">Company Name </label>
                <input asp-for="Name" class="form-control" />
                <span asp-validation-for="Name" class="text-danger"></span>
            </div>
        </div>
        <div class="col-md-6">
            <div class="form-group">
                <label asp-for="FirstName" class="control-label"></label>
                <input asp-for="FirstName" class="form-control" />
                <span asp-validation-for="FirstName" class="text-danger"></span>
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-md-4">
            <div class="form-group">
                <label asp-for="LastName" class="control-label"></label>
                <input asp-for="LastName" class="form-control" />
                <span asp-validation-for="LastName" class="text-danger"></span>
            </div>
        </div>
        <div class="col-md-6">
            <div class="form-group">
                <label asp-for="EmailAddress" class="control-label">Email Address </label>
                <input asp-for="EmailAddress" class="form-control" />
                <span asp-validation-for="EmailAddress" class="text-danger"></span>
            </div>
        </div>
    </div>
    <h4>Contact Person </h4>

    <div class="row">
        <div class="col-md-4">
            <div class="form-group">
                <label asp-for="PersonFirstName" class="control-label">First Name</label>
                <input asp-for="PersonFirstName" class="form-control" />
                <span asp-validation-for="PersonFirstName" class="text-danger"></span>


                <label asp-for="PersonEmailAddress" class="control-label">Email Address</label>
                <input asp-for="PersonEmailAddress" class="form-control" />
                <span asp-validation-for="PersonEmailAddress" class="text-danger"></span>

                <label asp-for="PhoneNumber" class="control-label"> Phone Number</label>
                <input asp-for="PhoneNumber" class="form-control" />
                <span asp-validation-for="PhoneNumber" class="text-danger"></span>



                <label asp-for="PhoneCountryCode" class="control-label">Phone Country Code </label>
                <input asp-for="PhoneCountryCode" class="form-control" />
                <span asp-validation-for="PhoneCountryCode" class="text-danger"></span>

                <label asp-for="Taxnumber" class="control-label">Vat Number </label>
                <input asp-for="Taxnumber" class="form-control" />
                <span asp-validation-for="Taxnumber" class="text-danger"></span>

            </div>
        </div>
        <div class="col-md-6">
            <div class="form-group">
                <label asp-for="PersonLastName" class="control-label">Last Name </label>
                <input asp-for="PersonLastName" class="form-control" />
                <span asp-validation-for="PersonLastName" class="text-danger"></span>
                <label asp-for="AddressLine1" class="control-label"> Street Address </label>
                <input asp-for="AddressLine1" class="form-control" />
                <span asp-validation-for="AddressLine1" class="text-danger"></span>

                <label asp-for="City" class="control-label">City</label>
                <input asp-for="City" class="form-control" />
                <span asp-validation-for="City" class="text-danger"></span>

                <label asp-for="PostalCode" class="control-label">Postal Code</label>
                <input asp-for="PostalCode" class="form-control" />
                <span asp-validation-for="PostalCode" class="text-danger"></span>
                <label asp-for="Website" class="control-label">Website</label>
                <input asp-for="Website" class="form-control" />
                <span asp-validation-for="Website" class="text-danger"></span>
            </div>
            <div class="form-group">
                <input type="submit" value="Create" class="btn btn-primary" />
            </div>

        </div>
    </div>

















</form>




@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)