簡體   English   中英

使用asp.net mvc3,如何以不同的格式顯示數據如何存儲在數據庫中?

[英]Using asp.net mvc3, how do I display data in a different format to how it's stored in the database?

我是.net,mvc和這個論壇的新手。 所以請耐心等待,並提前致謝。

我有一個舊的數據庫,其中包含一個'hh:mm'形式的時間字段作為字符串。 我無法更改數據庫,因為它被其他應用程序使用,但我需要讀取和寫入該字段

理想情況下,我想分開小時和分鍾,並將它們顯示為兩個單獨的下拉列表。 在使用mvc3和實體框架。 我雖然在這種情況下最好的想法是使用一個viewmodel,因為我想要返回的內容與我的數據庫表中的內容不同,但是我很難弄清楚如何將這個元素分成兩部分,渲染它,然后將它粘在一起以在數據庫上更新。

任何人都可以推薦任何關於如何開始這個的好技巧?

String.Split(':');

會給你一個3個字符串的數組[“hh”,“:”,“mm”]

您可以通過類似的方式擴展視圖模型的想法

public class ViewModel
{
public string SelectedHours;
public string SelectedMinutes;
public SelectList AllHours;
public SelectList AllMinutes;
}

你需要有一個所有小時和所有分鍾的列表,並創建一個新的選擇列表http://msdn.microsoft.com/en-us/library/system.web.mvc.selectlist.aspx

然后在您的視圖中,您可以使用@ Html.DropDownListFor方法。

@Html.DropDownListFor(model => model.SelectedHours, Model.AllHours)

然后當你得到你的結果時,只需將SelectedHours和SelectedMinutes連接在一起就可以創建字符串。

這可能是最簡單的方法。

歡迎來到MVC,一旦你習慣了它就會愛上它:)

要完成這項任務,您需要做一些事情:

  1. 將視圖中的html元素綁定到viewmodel

使用Razor的示例(這在您的視圖中):

@Html.LabelFor(m => m.Time)

...如果你想要下拉列表,你將不得不使用@ Html.DropDownListFor(),但是你需要為它創建一個SelectList ...請看這里

2。 創建一個ViewModel類並包含一個屬性來保存字符串值時間

3。 在控制器中,在數據庫數據返回后,調用輔助方法(或者如果最小則可以在操作本身中執行邏輯)以拆分字符串並將結果保存到視圖模型中。

TimeModel vm = new TimeModel();
vm.Time = String.Split(:); // Here is where u could call your helper method or add whatever logic you want to use to make the pretty string value.

然后返回View和viewmodel,然后就可以了。

Return View(vm);

由於這是數據庫中的一列,我建議將這個奇數時間字段的邏輯抽象到它自己的類中。

class MyTimeField 
{
    public int Hours { get; set; }
    public int Minutes { get; set; }

    public MyTimeField(String timeString)
    {
        var stringParts = timeString.Split(":");
        if(stringParts.length != 2) throw ArgumentException();
        Hours = Int32.Parse(stringParts[0]);
        Minutes = Int32.Parse(stringParts[1]);
    }

    public override String ToString()
    {
        return Hours + ":" + Minutes;
    }
}

使用此類,只要從數據庫中檢索數據,就可以簡單地創建類的實例,並在視圖中使用這些實例,而不是通過字符串解析和操作實現細節來修復代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM