请考虑我有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 })
在视图中,我有两个部分视图,一个用于学生表单,一个用于教师表单。对于学生表格将是这样的:
@ModelType Model.StudentTeacher
@Using Html.Beginform()
....
@Html.TextBoxFor(Function(m) m.Student.name)
....
End Using
此视图效果很好只有问题是每个元素的id都包含模型名称,因此学生姓名的输入将为:
<input id="student.name">
因此,当表单提交后,控制器将接收它作为“学生教师”的模型。而不是学生&#39;。我希望这个学生表格只发送学生模型。教师可以在同一视图中以不同的形式发送。有什么建议来解决这个问题吗?非常感谢你......!
答案 0 :(得分:1)
我可以通过两种方式来解决问题:
1)您可以通过合并其中的两个模型来使用ViewModel。然后将此ViewModel从Controller返回到View。在View上更改数据后,再次将此ViewModel返回到Controller。如果你想对这些数据做出不同的动作,可以在Controller中进行,而不是从View调用不同的方法。
2)正如您所做的那样,您可以使用部分视图,然后将每个模型发送到主视图中的相关部分视图。但是,当您提交表单时,您应该一次将表单参数作为两个参数(模型I和模型II)传递。然后你得到控制器中的表单数据(控制器接受这两个参数:模型I和模型II)。
希望这会有所帮助......