在使用嵌入其他模型的模型时,我遇到了很多问题(验证、序列化),我只是想知道之前是否有人收到过此类问题。例如,我有一个附有以下模型的查询表:
模型
namespace
{
public class EnquiryStudent
{
public enquiry enquiry { get; set; }
public student student { get; set; }
}
}
查询和学生模型(嵌入在查询学生中)是从数据库自动生成的(我使用的是数据库优先方法)。
例如,我在这里遇到的一个问题是我使用视图来显示基于上述模型的表单:
看法
@using (@Html.BeginForm())
{
<div>
<fieldset>
<fieldset>
<legend>Enquiry</legend>
<div class="editor-label">
@Html.LabelFor(m => m.student.firstname)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.student.firstname)
@Html.ValidationMessageFor(m => m.student.firstname)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.student.surname)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.student.surname)
@Html.ValidationMessageFor(m => m.student.surname)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.student.email)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.student.email)
@Html.ValidationMessageFor(m => m.student.email)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.enquiry.subject)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.enquiry.subject)
@Html.ValidationMessageFor(m => m.enquiry.subject)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.enquiry.enquiry_text)
</div>
<div class="editor-field">
@Html.TextAreaFor(m => m.enquiry.enquiry_text)
@Html.ValidationMessageFor(m => m.enquiry.enquiry_text)
</div>
</fieldset>
<p>
<input type="submit" class="rounded-button-gray-shades" value="Send" />
</p>
</fieldset>
</div>
}
并且客户端验证适用于除查询文本之外的所有内容(EnquiryStudent 模型中嵌入式查询的属性,即它不验证此客户端仅服务器端?
现在更奇怪的是,如果我将 enquiry_text 更改为 TextBoxFor 而不是 TextAreaFor 它工作得很好。或者,如果我通过向 EnquiryStudent 模型(未嵌入在另一个模型中)添加一个虚拟字段来为另一个实体创建一个文本区域,它可以正常工作。
有人可以解释一下,就像我说的那样,这不是我在这种模特关系中遇到的唯一怪癖。
谢谢,