SP 2010 には、任意の列に対してカスタム検証式とエラー メッセージを指定できる、このクールな新機能があります。
何らかの理由で、リストの既定の NewForm.aspx を、SharePoint デザイナーの [新しいリスト フォームの作成 -> 新しいアイテム フォーム] を使用してカスタム フォームに置き換えると、機能しません。ページにフィールドが明示的に記載されていないすべてのフィールドを反復してレンダリングする ListFormWebpart の代わりに、選択したコンテンツ タイプのすべてのフィールドに FormField コントロールを配置する aspx を作成します。
作成したばかりのカスタム フォームのすべてのフィールドのコードは、次のようになります (説明のため)。
<tr>
<td width="190px" valign="top" class="ms-formlabel">
<H3 class="ms-standardheader">
<nobr>PhoneNumber</nobr></H3>
</td>
<td width="400px" valign="top" class="ms-formbody">
<SharePoint:FormField runat="server" id="ff4{$Pos}" ControlMode="New" FieldName="PhoneNumber" __designer:bind="{ddwrt:DataBind('i',concat('ff4',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@PhoneNumber')}"/>
<SharePoint:FieldDescription runat="server" id="ff4description{$Pos}" FieldName="PhoneNumber" ControlMode="New"/>
</td>
</tr>
問題は、「Create New List Form -> New Item Form」フォームでは (新しい sharepoint 2010) 式の検証が機能しないことです。フォームの検証に合格するだけで、保存段階で失敗し、エラー ページが表示されます。
カスタム (非 ListFormWebpart) アイテム ページを使用する場合、FormField コントロールで何らかの方法で構成できますか、または他の方法でこの新しい sp2010 検証メカニズムを利用できますか、またはカスタム GUI 検証を記述する必要がありますか?
ありがとう!