我有一个输入、类型文本、元素,该元素正在客户端上使用 MVC3 验证进行验证,我不希望在发布时将输入值发送到服务器。
我有两个实体:一个“文件”实体和一个“公司”实体,它们共享一对一的关系。文件实体有一个 CompanyId 外键。
这就是为什么如果您查看名称和 id 属性,它们会显示为:File.Company.Code 或 File_Company_Code。
我想避免将输入值发送回服务器的原因是当请求到达服务器时,我只想将值绑定到我的“文件”类型的实体。由于它还接收“File.Company.Code”的值,它还尝试将值绑定到文件的公司对象,这是我想要避免的。
The input element is :
<input name="File.Company.Code" id="File_Company_Code" type="text" data-val-required="Se requiere un código de cliente." data-val="true" value=""/>
And the span element:
<span class="field-validation-valid" data-valmsg-replace="true" data-valmsg-for=" File.Company.Code "/>
我试过:
- 使用 jquery 更改输入名称和跨度 data-valmsg-for 属性。但我认为这样做之后我可能需要重新绑定验证器?
有什么建议么?(如果不让我知道,我希望能清楚地解释自己。)
谢谢
更新 1 **
感谢 AFinkelstein 的建议让我走上了正确的轨道,我更新了我的域模型,例如:
public class FileModel {
public File File {
get {
return this.file;
}
}
*** ADDED this which helped me solve the problem ***
public Company Company {
get {
return this.file.Company;
}
}
}
在我看来,而不是这样做:
@Html.TextboxFor(model => model.File.Company.Code)
@Html.ValidationMessageFor(model => model.File.Company.Code)
我现在这样做:
@Html.TextboxFor(model => model.Company.Code)
@Html.ValidationMessageFor(model => model.Company.Code)
这样生成的 name 和 Id 属性具有值:Company.Code 和 Company_Code,它们没有前面的“File”。当我在服务器上收到帖子并将值绑定到 File 对象时:
FileModel fileModel = new FileModel();
try {
TryUpdateModel(fileModel.File, "File");
因为它没有收到“File.Company.Code”的值,所以它不会尝试初始化文件的“Company”对象,这会导致我出现其他问题。