【问题标题】:Using jquery in an asp.net mvc 2 editor template在 asp.net mvc 2 编辑器模板中使用 jquery
【发布时间】:2009-12-27 07:46:14
【问题描述】:

我在一个 mvc 应用程序中创建了一个编辑器模板,我想将模板中每个文本框的输入限制为仅数字。

在渲染时,模板可能会在页面上多次渲染,因为视图可能具有多个电话号码类型的属性,因此文本框的实际 ID 将获得唯一的名称。对我来说,在模板中添加一些 jquery 代码、减少代码重复以及能够处理 mvc 框架动态生成 ID 的问题的最佳方法是什么?

下面是我的模板:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<PhoneNumber>" %>
<span>
(<%= Html.TextBox("AreaCode", (Model == null) ? "" : Model.AreaCode, new { size = 3, maxlength = 3, style = "width:25px" })%>)&nbsp;
<%= Html.TextBox("Prefix", (Model == null) ? "" : Model.Prefix, new { size = 3, maxlength = 3, style = "width:25px" })%>-
<%= Html.TextBox("Suffix", (Model == null) ? "" : Model.Suffix, new { size = 3, maxlength = 4, style = "width:35px" })%>&nbsp;
<%= Html.TextBox("Extension", (Model == null) ? "" : Model.Extension, new { size = 10, maxlength = 10, style = "width:55px" })%>
</span>

【问题讨论】:

    标签: jquery asp.net-mvc asp.net-mvc-2


    【解决方案1】:

    将每个文本框设置为具有特定的 css 类。然后使用 jquery 处理类而不是 id。然后,您还可以删除一些 html 属性并在您的 css 类中专门定义它。

    <%= Html.TextBox("AreaCode", (Model == null) ? "" : Model.AreaCode, 
        new { size = 3, maxlength = 3, @class = "number-textbox" }) %>
    
    //jquery
    $('.number-textbox').each(function()
    {
       //validate numbers method
    });
    
    //css
    .number-textbox
    {
        width: 25px;
    }
    

    【讨论】:

      【解决方案2】:

      你应该创建一个用户控件作为你的“模板”,并根据一些唯一标识用户控件的 id 使用绑定前缀。

      喜欢:

      Html.TextBox("Contact1.AreaCode", [...])
      

      但我认为你必须自己取回这些值。

      或者您可以创建自己的模型绑定器来处理您的列表。

      迈克

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-27
        • 2011-05-14
        • 1970-01-01
        相关资源
        最近更新 更多