使用Javascript的ASP.NET web应用程序-正确填充数据库列
使用C#、Javascript和SQL Server 2017在ASP.NET中创建CRUD应用程序 数据库表有三列,使用Javascript的ASP.NET web应用程序-正确填充数据库列,javascript,c#,asp.net,Javascript,C#,Asp.net,使用C#、Javascript和SQL Server 2017在ASP.NET中创建CRUD应用程序 数据库表有三列,Country、CountryCode和CountryCodeId,我试图用create函数填充它们(是的,我知道这里存在关系设计缺陷-这超出了问题的范围) 我有一个enum类,看起来像这样: public enum Country { [Description("Afghanistan")] AFG = 1, [Description(
Country
、CountryCode
和CountryCodeId
,我试图用create函数填充它们(是的,我知道这里存在关系设计缺陷-这超出了问题的范围)
我有一个enum
类,看起来像这样:
public enum Country
{
[Description("Afghanistan")] AFG = 1,
[Description("Åland Islands")] ALA = 2,
[Description("Albania")] ALB = 3,
}
我在UI中有一个下拉菜单,显示国家的名称,如上面的说明部分所示。假设下拉列表的选择值是阿富汗。在执行create函数时,我需要用Afghanistan
填充数据库的Country
列,用AFG
填充CountryCode
列,用1
填充CountryCodeId
列
我的Javascript技能是最缺乏的,在这三个技能中,我只能使用CountryCodeId
。这是我的JS代码-问号是我迷路的地方:
async function newRecord(form) {
var record = {};
record.countryCodeId = $('#country').val();
record.countryCode = $("???").val();
record.country = $("???").val();
var response = await fetch(`${endpoint}api/record`, {
method: 'POST',
crossDomain: true,
cache: 'no-cache',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify(record)
});
编辑1:根据要求,这里是C#插入
功能:
public bool Insert(Record record)
{
SqlConnection connection = new SqlConnection(_configuration.GetConnectionString("Production"));
connection.Open();
using (connection)
{
string query = "INSERT INTO [dbo].[Table]" +
"([Country]" +
",[CountryCode]" +
",[CountryCodeId]")
"VALUES " +
"(@Country" +
",@CountryCode" +
",@CountryCodeId")";
return connection.Execute(query, record) > 0;
}
}
编辑2:
插入的控制器操作方法:
[HttpPost]
public JsonResult Insert(Record record)
{
try
{
bool result = _repository.Insert(record);
return new JsonResult(new OperationResult { Success = true });
}
catch (Exception ex)
{
return new JsonResult(new OperationResult { Success = false, Error = ex.Message });
}
}
试试这个:-
using System.ComponentModel;
.
.
void ProcessCountry(string countryCode)
{
Country country;
// i.e. countryCode = "AFG"
if (Enum.TryParse(countryCode, out country))
{
string description = null;
try
{
FieldInfo fieldInfo = country.GetType().GetField(country.ToString());
DescriptionAttribute[] attributes =
(DescriptionAttribute[])
fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false);
description = ((attributes.Length != 0) ?
attributes[0].Description :
country.ToString());
}
catch (System.NullReferenceException)
{
}
finally
{
if (string.IsNullOrEmpty(description))
{
description = "Unknown";
}
}
int value = Convert.ToInt32(country);
Console.Write($"countryCode: {countryCode}, description: {description}, value: {value}");
}
}
FieldInfo/DescriptionAttribute内容将描述从System.ComponentModel.description属性中提取出来,并且当您已经给出了枚举值INT值时,您可以将它们解析为INT。您可以发布“创建”函数吗?我猜这是某个控制器操作,它将更新数据库表,是吗?@sh1rts是的,好主意。后期编辑。插入时缺少结束部分。快速回答:您的枚举在js中不可用,因此只需提交id并在服务器上用C#填充其余的,您能显示您的表单以便我知道使用什么作为selector@GarrGodfrey谢谢,修正了。谢谢@sh1rts的代码。至于将其与我的项目联系起来,我将在何时何地调用ProcessCountry
方法?这只是一个示例—重用您需要的东西。您可以发布JavaScript正在调用的控制器操作方法吗?(不是插入数据的方法)参见编辑2-这就是您所指的吗?