带有自定义表达式的ASP.Net EditorFor

时间:2014-01-02 11:33:55

标签: asp.net-mvc razor editorfor

内置的EditorFor仅适用于成员访问表达式。

但是在一种情况下,我需要将值乘以100并将其放在文本框中。 这是因为该值表示百分比,并且用户应该能够输入27,其内部存储为0.27。 为此,有一些像EditorFor(m => m.MyValue * 100)

这样的东西会很好

有没有相应的东西?

2 个答案:

答案 0 :(得分:1)

只需在您的视图模型中添加MyValueAsPercentage之类的内容:

public class MyDataModel
{
    public double MyValue { get; set; }
}

// ...

public class MyViewModel
{
    public double MyValueAsPercentage { get; set; }

    public MyViewModel(MyDataModel dataModel)
    {
        this.MyValueAsPercentage = dataModel.MyValue * 100;
    }

    public MyDataModel ToDataModel()
    {
        return new MyDataModel() { MyValue = MyValueAsPercentage / 100 };
    }
}

现在,您可以在视图模型上使用相同的成员访问表达式:

Html.EditorFor(m => m.MyValueAsPercentage)

希望这有帮助。

答案 1 :(得分:1)

您可以尝试在属性中添加属性

[DisplayFormat(DataFormatString = "{0:P2}", ApplyFormatInEditMode = true)]
    public decimal MyValueASPercentage { get; set; }

现在,您的网页上的值为0.27将显示为27%。希望有所帮助