请考虑我有2个表格将以单一视图显示,分别是学生表格和教师表格。每个都有不同的形式动作。我需要一次通过控制器传递这两个模型。因此,我决定将2纳入新的模型类别:
Public Class StudentTeacher
Public Student As ClsStudent
Public Teacher As ClsTeacher
End Class
并从控制器发送模型:
Return View(New StudentTeacher With {.Student = New ClsStudent, .Teacher = New ClsTeacher })
在视图中,我有2个局部视图,一个用于学生形式,一个用于教师形式。对于学生形式将是这样的:
@ModelType Model.StudentTeacher
@Using Html.Beginform()
....
@Html.TextBoxFor(Function(m) m.Student.name)
....
End Using
仅在问题在于每个元素的ID将包括模型名称的情况下,该视图才有效,因此学生名称的输入将是:
<input id="student.name">
因此,提交表单后,控制器会将其作为“ StudentTeacher”而不是“ Student”的模型来接收。我想要此学生表的只是发送学生模型。可以在同一视图中以不同的形式发送教师。有什么建议解决这个问题吗?非常感谢你...!
我有2种建议解决问题的方法:
1)您可以通过组合使用其中的两个模型来使用ViewModel。然后将此ViewModel从Controller返回到View。在View上更改数据后,然后将此ViewModel再次返回给Controller。如果要对这些数据执行不同的操作,则可以在Controller中进行此操作,而不用从View中调用其他方法。
2)和以前一样,您可以使用局部视图,然后将每个模型发送到主视图中的相关局部视图。但是,在提交表单时,您应该一次将表单参数作为两个参数(模型I和模型II)传递。然后,您在控制器中获得表单数据(控制器接受以下两个参数:模型I和模型II)。
希望这可以帮助...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句