1

asp.net mvc3 で jquery を使用しようとしています。リストには EditorTemplates を使用しています。私のモデルは

public class staffinfo
{
    public int staffid { get; set; }
    public double extgrade { get; set; }
    public string lvlid { get; set; }
    public IList<SelectListItem> level { get; set; }
    public string grdid { get; set; }
    public IList<SelectListItem> grade { get; set; }
    public double pf { get; set; }       
    public double wages { get; set; }
    public List<hrfacility> facility { get; set; }

}

public class hrfacility
{
    public int id { get; set; }
    public string name { get; set; }
    public double price { get; set; }        
    public int staffid { get; set; }
    public string staffname { get; set; }               
    public double amount { get; set; }
    public bool selected { get; set; }
}

意見:

...
@Html.EditorFor(m => m.wages)    
@Html.EditorFor(m=>m.facility) 

hrfacility の EditorTemplate

@model Mysol.Models.hrfacility
...
@Html.DisplayFor(m=>m.name)
@Html.CheckBoxFor(m=>m.selected)    
@Html.EditorFor(m => m.staffname)
@Html.EditorFor(m => m.amount)

 <script type="text/javascript">
    $('#staffname').attr('readonly', true);
</script>

上記の手順をエディターテンプレートのリスト部分なしで使用しましたが、jquery は正常に動作しますが、この特定の状況では動作しません!!

複数のスタッフ名が存在する可能性があるためですか??

上記の状況でjqueryを機能させるにはどうすればよいですか(staffnameを読み取り専用にします)??

PS readonly は単なる例です。テキストボックスに値を割り当てるなど、jqueryで他のことも行う必要があります。この仕事ができれば、他のこともできると思います。

ありがとう

4

2 に答える 2

2

の入力のIDは、などのstaffnameようにする必要があるため、機能しません。facility_0_staffnamefacility_1_staffname

入力にクラスを追加し、staffnameそのクラスでアクセスすることをお勧めします。

FirebugでIDを確認できます(Firefoxの場合)

于 2012-08-10T08:55:04.403 に答える
1

Bj、

あなたが倍数を持っていることを考えると、あなたの最善の策はclass、ではなく、に取り組むことかもしれないと思いますId。あなたは試すことができます:

@Html.TextBoxFor(m => m.staffname, new { @class = "staffname" })

....    

<script type="text/javascript">
    $(function () {
        $('.staffname').attr('readonly', true);
    });
</script>

EditorFor(これは受け入れられないため、使用できないことに注意してくださいhtmlAttributes。基本入力タイプを使用する必要がありますが、読み取り専用テキストボックスに表示することを「知っている」ので問題ありません)

[編集] -もちろん、テキストボックスを使用する場合は、クラスを使用する必要はまったくありません。もちろん、スタイル「インライン」を追加するだけで、同じ結果を得ることができます。

@Html.TextBoxFor(m => m.staffname, new { @readonly = "true" })

または(ブラウザの癖):

@Html.TextBoxFor(m => m.staffname, new { @readonly = "readonly" })

NB

さらにもう1つ、jqueryライブラリが読み込まれる前に、EditorForテンプレートが実際に呼び出される可能性があります(javascriptの読み込みによって異なります)。生成されたソースを調べて、これが当てはまらないことを確認します。Prollyは問題ではありませんが、テンプレートとパーシャルのエディターで以前に私を捕らえた問題です。

于 2012-08-10T08:42:25.793 に答える