问题描述
我正在编写一个应用程序,该应用程序需要用户输入才能为连接的组织的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 (将#修改为@)