Asp.net VB Web API-名称中带有句点的表单编码值的属性名称
问题: 我应该如何命名将通过HTTP请求中的表单编码输入分配的属性,以确保在我从表单编码输入创建类的新实例时填充该属性,该类将具有一些名称中带有句点的键 我有一个VB.NET应用程序,它使用ASP.NET自托管Web API 其中一个方法接受来自应用程序Bomgar的输入 发送的数据采用表单编码格式,如下所示:Asp.net VB Web API-名称中带有句点的表单编码值的属性名称,asp.net,asp.net-mvc,vb.net,asp.net-web-api,Asp.net,Asp.net Mvc,Vb.net,Asp.net Web Api,问题: 我应该如何命名将通过HTTP请求中的表单编码输入分配的属性,以确保在我从表单编码输入创建类的新实例时填充该属性,该类将具有一些名称中带有句点的键 我有一个VB.NET应用程序,它使用ASP.NET自托管Web API 其中一个方法接受来自应用程序Bomgar的输入 发送的数据采用表单编码格式,如下所示: jump_item.comments= &jump_item.computer_name= &jump_item.group= &jump_item.privat
jump_item.comments=
&jump_item.computer_name=
&jump_item.group=
&jump_item.private_ip=
&jump_item.public_ip=
&jump_item.tag=
&jump_item.type=
&request_id=
&response_url=
&ticket_id=
&user.email_address=
&user.id=
&user.private_display_name=
&user.public_display_name=
&user.username=
通过建立一个具有相同名称属性的对象,我能够处理“请求id”、“响应url”和“票证id”部分
我这样做是因为我读到当接受表单输入并将包含此数据的http消息体发送到对象中时,它会自动将表单输入映射到包含这些名称的属性中
我有一个名为Ticket的类,定义如下:
Public Class Ticket
Public Property response_url As String
Public Property request_id As String
Public Property ticket_id As String
End Class
我通过控制器中的以下内容将表单数据的内容映射到此类的实例中:
Public Sub PostProduct(<FromBody()> NewTicketRequest As Ticket)
...
End Sub
或
即使输入的项目将在单词user之后有一个句号。您可以将复杂属性添加到您的
票证
模型中。这些属性的名称应与“.”之前的前缀匹配,并且这些属性的类型应包含名称在“.”之后的属性
例如,要获取jump\u item.*
值,您的票证
模型应包含名为jump\u item
的属性,该属性的类型包含名为*的属性:comments
,computer\u name
,group
,private\u ip
,public\u ip
,标签
和类型
示例
在下面的示例中,我向使用Visual Studio创建的默认ASP.NET WebAPI项目添加了一个模型、控制器和视图
模型
控制器
公共类值控制器
继承ApiController
'后api/值
公共子PostValue(ByVal值作为票证)
端接头
末级
看法
这是一个极好的回答。我对整个模型/控制器/视图方面没有经验;我目前只有一个使用ASP.NET Web API的桌面应用程序。是否需要查看?这非常有效!我非常感谢你,你能告诉我吗;如果我通过XML接受一个类似的输入,该输入有一个XML标记,该标记下面包含一个对象列表,这会涉及到在我的类上设置一个属性作为列表中的对象数组,并将带有列表的元素传递给该数组吗?例如,到包含所有子属性的会话数组?我知道这要求很高,但你能告诉我怎么做吗?或者我应该设置一个单独的问题?我不确定XML,但是关于包含复杂对象嵌套列表的GET/POST值,您可以使用Phil Haack在这篇伟大的文章中描述的技术:顺便说一下,您的问题有一个被遗忘的+1。
NewTicketRequest.user.email_address
NewTicketRequest.user_email_address
Public Class Ticket
Public Property Id As Integer
Public Property Text As Integer
Public Property User As ApplicationUser
End Class
Public Class ApplicationUser
Public Property Id As Integer
Public Property UserName As String
Public Property DisplayName As String
End Class
Public Class ValuesController
Inherits ApiController
' POST api/values
Public Sub PostValue(<FromBody()> ByVal value As Ticket)
End Sub
End Class
<form action="/api/values" method="post">
<input type="text" name="Id" />
<input type="text" name="Text" />
<input type="text" name="User.Id" />
<input type="text" name="User.UserName" />
<input type="text" name="User.DisplayName" />
<input type="submit" value="Save" />
</form>