jQuery で 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 を使用して読み込まれますが、アクション メソッドに送信する送信ボタンも含まれています。
私は 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の両方にかなり慣れていないので、何が間違っているのかについて明確な指針をいただければ幸いです...ありがとう!