jQueryを使用してPartialViewをロードするタイムシートアプリケーションがあります。すべて正常に動作しますが、入力を検証する方法はわかりません。私は前にそれをやった方法と同様にそれを行うことを試みたが、それは動作しません:複雑なモデルでpartialviewを検証しますか?
<% for (int i = 0; i < Model.Tasks.Count; i++)
{
var task = Model.Tasks[i];
%>
<tr class="taskrow">
<td class="customer">
<%: task.Customer.CustomerName %>
</td>
<td class="task">
<%: task.TaskName %>
</td>
<% for (int j = 0; j < task.TimeSegmentList.Count; j++)
{ %>
<td>
<%: Html.TextBoxFor(model => model.Tasks[i].TimeSegmentList[j].Hours, new { @class = "hourInput" })%>
<%: Html.ValidationMessageFor(model => model.Tasks[i].TimeSegmentList[j].Hours)%>
</td>
<% } %>
</tr>
<% } %>
このPartialViewはjQueryのを使用してロードされているが、それはまた、アクションメソッドに提出するsubmitボタンが含まれています。
私は、Entity Frameworkを使用していますので、私はこのようなDataAnnotationsでモデルを飾るために必要があることを読んだ:
[MetadataType(typeof(TimeSegmentMetaData))]
public partial class TimeSegment
{
public class TimeSegmentMetaData
{
[Range(0,24,ErrorMessage = "Must be between 0 and 24 hours")]
public object Hours { get; set; }
}
}
だから私は確信して、それがためにここに0と24の間の数値入力していますようにしたいです時間。 (私はint型であることを確認したいと思いますが、それでもまだ検証作業を行う必要はありません)
これはうまくいかず、何が間違っていますか?私はPartialViewのforループを持つ複雑なモデルを持っているので、これを行うことはできませんか?
私は、厳密なjQuery検証(これについてはjQueryプラグインがあることがわかりました)を見つけることを考えていましたが、PartialView内でjQueryを使用する方法を理解できません。 document.ready関数がメイン(親)ビュー内にあるときにjQueryを実行するにはどうすればよいのでしょうか?後で私は、ユーザが入力フィールドを選択した場合に、何かできるようにしたいので、これはとにかく必要になるでしょう...
PS:私はまだjQueryとMVCの両方に新しいので、私が間違っていることについての明確な指針...ありがとう!
実際には、エンティティフレームワークのメタデータ内にあるため、型はオブジェクトです。実際のモデルはintです。そして、私はforeachを使うことができません。なぜなら、textboxforを使ったビューのバインディングはforループを必要とするからです。 – Anders