2015-08-13 122 views
0

關於類似主題有幾個問題。但是,他們並沒有真正解決我的問題。我可以通過數據註釋更改EditorFor的寬度嗎?

DisplayFormat for TextBoxFor in MVC

Display a formatted date in an EditorFor()

ASP.NET MVC EditorFor DateTime

我一直在尋找和閱讀並不能找到答案。目前我使用這個格式化我的輸入框

@Html.TextBoxFor(modelItem => item.Quantity, new { style = "width: 30px;" }) 

從我的模型,我有短暫的數據註釋:

[Required, Range(1, 100)] 
public int Quantity { get; set; } 

所以我得到這樣的:

當我使用

@Html.EditorFor(modelItem => item.Quantity, new { style = "width: 30px;" }) 

我得到這個:

enter image description here

我要的是滾動的,但格式化的寬度。

我想知道,有沒有辦法將EditorFor的寬度設置爲data annotations?如果沒有,製作這種格式的最簡單方法是什麼,以避免重複。bootstrapcss?我對內聯樣式不滿意。

+0

您使用的是MVC-5.1 +。如果不是,則不能將html屬性傳遞給默認編輯器模板(您將需要創建自己的自定義'EditorTemplate')。或者使用'@ Html.TextBoxFor(m => m.Quantity,new {type =「number」,style =「width:30px;」})' –

+0

MVC 4 @StephenMuecke。我將升級爲下一個項目。 –

+0

@StephenMuecke謝謝你。你能發佈這個答案嗎?,我不確定自定義EditorTemplate。你可能會被授予積分 –

回答

1

從評論中,您使用的MVC-4。除非您使用MVC-5.1或更高版本,您可以不通過HTML屬性的EditorFor()方法(參考的release notes - 上爲編輯模板引導支持部分)

一種選擇是使用TextBoxFor()方法並傳遞type="number"渲染瀏覽器數字控制

@Html.TextBoxFor(m => m.Quantity, new { type = "number ", style = "width: 30px;" }) 

另一個辦法是創建一個自定義EditorTemplate(說_NumericControl.cshtml

@model System.Int32 
@Html.TextBoxFor(m => m, new { type = "number ", style = "width: 30px;" }) 

,並呼籲它使用@Html.EditorFor(m => m.Quantity, "_NumericControl")

但這真的只能是任何真正的好處,如果模板也包括其他HTML元素,例如@Html.LabelFor(m => m)@Html.ValidationMessageFor(m => m),甚至相關的按鈕,以便EditorFor()方法使所有元素。

+0

謝謝,我認爲這是有用的信息。 –

相關問題