Cia*_*hue 7 c# vb.net asp.net asp.net-mvc
我正在创建一个MVC应用程序,我正在向JIRA发送电子邮件.当我在视图中使用ModelTable时,我最初使用它,但是当我更改它时,ModelType ViewModelClass.ViewModel它也停止了正常工作.
在控制器中:
Public Function SubmitIssue(issuetable As IssueTable, test As IssueTracker.ClientUserProjectIssue ) As ActionResult
Dim mail As New MailMessage()
mail.Subject = issuetable.IssueSummary
Dim body As String = test.iTable.IssueDescription
mail.Body = body
smtp.Send(mail)
Run Code Online (Sandbox Code Playgroud)
在视图中:
@ModelType IssueTable
@Html.EditorFor(Function(model) model.IssueSummary)
@Html.EditorFor(Function(model) model.IssueDescription)
Run Code Online (Sandbox Code Playgroud)
这最初工作,但我需要有多个表来发送数据,所以我创建了一个像这样的viewModel:
Public Class ViewModel
Public proTableList As List(Of ProjectType)
Public cTableList As List(Of ClientTable)
Public proTable As ProjectType
Public iTable As IssueTableViewModel
End Class
Public Class IssueTableViewModel
Public IssueSummary As String
Public IssueDescription As String
End Class
Run Code Online (Sandbox Code Playgroud)
在视图中,我显示如下信息:
@ModelType IssueTracker.ViewModel
@Html.EditorFor(Function(model) model.iTable.IssueSummary)
@Html.EditorFor(Function(model) model.iTable.IssueDescription)
Run Code Online (Sandbox Code Playgroud)
现在问题在于我在控制器中,因为我试图填充描述和摘要的方式像这样我得到一个空错误:
Public Function SubmitIssue(issuetable As IssueTable, test As IssueTracker.ClientUserProjectIssue ) As ActionResult
Dim mail As New MailMessage()
mail.Subject = test.iTable.IssueSummary
Dim body As String = test.iTable.IssueDescription
mail.Body = body
smtp.Send(mail)
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,除了添加到代码中的明显ViewModel类之外,它完全相同.
这显然不一定是通过使用viewModel将值赋入变量/电子邮件的正确方法,是否有人知道我如何正确地执行此操作?
小智 2
您需要BindAttribute
从控制器方法中删除 ,或将其更改为<Bind(Include:="iTable")>
您的视图模型不包含名为和 的属性IssueID
,仅包含名为 的属性(该属性又包含这些属性)。IssueSummary
IssueDescription
iTable
但是,您使用视图模型,并且视图模型应该只包含视图中所需的属性,这意味着您BindAttribute
的方法上不应该需要 a 。
假设您仅编辑IssueSummary
和IssueDescription
属性IssueTable
(根据您的代码),那么您的视图模型应该是
Public Class ViewModel
Public proTableList As List(Of ProjectType)
Public cTableList As List(Of ClientTable)
Public proTable As ProjectType
// Public iTable As IssueTable // delete this
Public IssueSummary As String // add this
Public IssueDescription As String // add this
End Class
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
223 次 |
最近记录: |