クライアントで MVC3 検証を使用して検証されている入力、タイプ テキスト、要素があり、ポストが発生したときに入力値がサーバーに送信されないようにしたいと考えています。
1 対 1 の関係を共有する「ファイル」エンティティと「会社」エンティティの 2 つのエンティティがあります。ファイル エンティティには、CompanyId 外部キーがあります。
これが、name および 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 を変更します。しかし、これを行った後、バリデーターを再バインドする必要があるかもしれません??
何か提案はありますか?(私に知らせなければ、私は自分自身を明確に説明したいと思っています。)
ありがとう
更新 1 **
AFinkelstein sugestion のおかげで正しい軌道に乗ることができ、次のようなドメイン モデルを更新しました。
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 オブジェクトにバインドすると、次のようになります。
FileModel fileModel = new FileModel();
try {
TryUpdateModel(fileModel.File, "File");
「File.Company.Code」の値を受け取っていないため、ファイルの「Company」オブジェクトを初期化しようとしないため、他の問題が発生していました。