JSが無効なときにクライアントサイド検証とサーバーサイド検証で動作するMVC 3フレームワークで条件付きで必要なプロパティを作成するにはどうすればよいですか?例えば:MVC 3条件付きで必要なプロパティ
public class PersonModel
{
[Required] // Requried if Location is not set
public string Name {get; set;}
[Range(1, 5)] // Requried if Location is not set
public int Age {get; set;}
[Required] // Only required if Name and Age are not set.
public string Location {get; set;}
}
この例のルールは、次のとおりLocation
が設定されていない場合
Name
とAge
が必要です。Location
は、Name
とAge
が設定されていない場合にのみ必要です。- 名前、年齢、場所がすべて設定されていても問題ありません。
ビューでは、名前/年齢が設定されている場合、結果はAction
に送信する必要があります。場所が設定されている場合は別のAction
です。私は別のGet Urlを使って2つの別々のフォームを試しました。バリデーションルールが問題を引き起こしていることを除いて、これは素晴らしいことです。場所が提出されている場合PersonModelは名前と年齢があることを期待しているので、できれ、私は2つの別々のGETアクションのURLの使用を希望、すなわち、
@model PersonModel
@using(Html.BeginForm("Age", "Person", FormMethod.Post))
{
@Html.TextBoxFor(x => x.Name)
@Html.ValidationMessageFor(x => x.Name)
@Html.TextBoxFor(x => x.Age)
@Html.ValidationMessageFor(x => x.Age)
<input type="submit" value="Submit by Age" />
}
@using(Html.BeginForm("Location", "Person", FormMethod.Post))
{
@Html.TextBoxFor(x => x.Location)
@Html.ValidationMessageFor(x => x.Location)
<input type="submit" value="Submit by Location" />
}
上記PersonModel
に基づき、検証が失敗します同様に設定します。また、名前/年齢の場合も同様です。
上記のモックアップされた例では、JSが無効なときにクライアントサイド検証とサーバーサイド検証で動作するMVC 3フレームワークで条件付きで必要なプロパティをどのように作成しますか?