2011-04-06 84 views
0

我不確定這是可能的,還是可接受/不可接受的做法,但我在Person對象上有一個int屬性(Gender),並且我想知道是否有一種方法可以顯示文本(和單選按鈕,假設這些是最好的選擇)供用戶選擇(即「男性」和「女性」),而不是將其顯示爲數字。我假設這是可能的,但我不知道從哪裏開始。會直接在物業上進行一些定製,可能是在服務層?我在那裏的其他屬性上有「格式」和「標題」的一些定製。這裏是我所有的性別:有沒有辦法在UI中顯示一個int屬性作爲文本?

properties.Add(new PropertyData { Property = "Gender", Type = "Int32", Value = data.Gender.ToString() }); 

或者它會直接在視圖中嗎?這就是我現在所擁有的 - 只是一個可以輸入整數的文本框。

<p class="span1"> 
    @Html.Label(Model.Person.Properties, "Gender") 
    @Html.TextBox(Model.Person.Properties, "Gender") 
    @Html.Tip(Model.Person.Properties, "Gender") 
</p> 

任何幫助表示讚賞。 :)請讓我知道,如果我需要提供任何額外的信息或代碼。

編輯: 我用下面的:

<p> 
    @Html.Label(Model.Person.Properties, "Gender") 
    <input type="radio" name="Gender" value="1" /><span>Male</span> 
    <input type="radio" name="Gender" value="2" /><span>Female</span> 
</p> 

有沒有一種方法,以保持選擇的按鈕,當我拉起我的人來編輯?其他所有內容(即記錄的當前數據)在編輯表單上重新填充。 (這應該是一個單獨的問題嗎?)

+1

你需要將性別作爲一個整數嗎?布爾值會更好 – babsher 2011-04-06 18:53:55

+0

OT:在形而上的層面上,問題應該是相反的:如果不是在文本中,你將如何顯示一個int? (條形圖,滑塊,象形圖計數):) – sehe 2011-04-06 19:11:14

+0

@ user673289,我不確定感知的好處是將它作爲一個整數。這就是我被告知創造它的原因,但我可以看到你的觀點。 – 2011-04-06 19:53:00

回答

1

看看這篇文章,看看是否有幫助:How to pass an enum to Html.RadioButtonFor to get a list of radio buttons in MVC 2 RC 2, C#

總之

  1. 創建一個性別枚舉
  2. 使用方法從枚舉讀性別名
  3. 設置單選按鈕的值爲 enum的值
+0

感謝您的意見。這是我創建的,從第一個答案,從@Tejs:

@ Html.Label(Model.Person。屬性,「性別」)

您是否看到與性別枚舉一起使用它的好處?對我來說,似乎比只有兩個選項需要更復雜......但我仍然是一個新手,所以也許我錯過了其他的東西。 – 2011-04-06 19:50:22

+0

對不起,我忘了在上面的評論中標記你。我不確定你是否會看到它。 (我刪除了這個,認爲我可以編輯我原來的評論,但是看起來你只能編輯你最近的評論?:/抱歉。) – 2011-04-06 19:57:27

+1

@White Island枚舉的好處是你的代碼更具可讀性。更容易理解,性別= 1或性別=女性?不熟悉你的代碼的人不會明白Gender = 1的含義。 – Cory 2011-04-06 21:25:01

1

在MVC中,您可以完全控制您呈現的HTML。所以你在這裏有幾個選擇。您可以手動生成HTML,只要你想它:

<input type="radio" name="SomeName" value="1"><span>Male</span> 
<!-- Etc for each item !--> 

或者,您可以用其他的HtmlHelpers的一個這樣做的:

@Html.RadioButtonFor(x => x.Person.Properties, "Male") 
@Html.RadioButtonListFor (Custom) 

有你如何能實現更多的信息here您在MVC3中擁有單選按鈕列表。

+0

感謝您的快速響應和明確的說明。我最終使用枚舉和下拉列表,而不是單選按鈕。 – 2011-04-18 13:48:12

相關問題