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 的编辑器模板

@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>

我在 editortemplates 中使用了没有列表部分的上述过程,并且 jquery 工作正常,但对于这种特殊情况,它不起作用!

是因为可能有不止一个员工姓名吗?

我怎样才能使 jquery 在上述情况下工作(使人员名称只读)?

PS readonly 仅用于示例目的。我还需要用 jquery 做其他事情,比如将值分配给文本框。如果我能得到这份工作,我想我也可以做其他事情。

谢谢

4

2 回答 2

2

它不起作用,因为输入的 idstaffname应该是类似facility_0_staffname的,facility_1_staffname等等。

您最好在staffname输入中添加一个类并使用该类访问它。

您可以使用 Firebug 检查 id(在 Firefox 上)

于 2012-08-10T08:55:04.403 回答
1

Bj,

我认为你最好的选择可能是处理 a class,而不是 a 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" })

注意

要补充的另一件事是,在加载 jquery 库之前,实际上调用 EditorFor 模板的可能性很小(取决于您的 javascript 加载)。通过查看生成的源来检查情况是否如此。Prolly 不是问题,而是以前使用编辑器模板和部分内容引起了我的注意。

于 2012-08-10T08:42:25.793 回答