2009-12-27 69 views
2

我在mvc應用程序中創建了編輯器templace,並且我想將模板中每個文本框的輸入限制爲僅數字。在asp.net mvc 2編輯器模板中使用jquery

在渲染時,模板會在頁面上多次渲染,因爲視圖可能具有多個屬性類型的電話號碼,所以文本框的實際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> 

回答

2

設置每個文本框有一個特定的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; 
} 
+0

好主意,謝謝。 – Jeremy 2009-12-27 19:57:53

0

你應該創建一個用戶控件作爲你的「模板」,並根據一些ID唯一識別用戶的控制使用綁定前綴。

像:

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

但我認爲你必須給自己的值取回來。

或者您可以創建自己的模型聯編程序來處理您的列表。

邁克

相關問題