0

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の両方に新しいので、私が間違っていることについての明確な指針...ありがとう!

答えて

0

タイプをIntに変更することから始めます。また、Forループの代わりにforeachを使用することもできます。

foreach (Task task in task.TimeSegmentList) 
+0

実際には、エンティティフレームワークのメタデータ内にあるため、型はオブジェクトです。実際のモデルはintです。そして、私はforeachを使うことができません。なぜなら、textboxforを使ったビューのバインディングはforループを必要とするからです。 – Anders

関連する問題