0

我想显示输入框的标签,但我有 3 个包含信息的不同类

像Class1【设置】是这样的

public class Settings
{
    public static decimal Setting1 { get; set; }
    public static decimal Setting2 { get; set; }
}

我们在登录时在上面的类中填充数据,所以我们把它保存在会话中

我的 Class2 [AppConst] 是这样的

public static class AppConst
{
    public const string _unitPersentage = "%";
    public const string _unitPerMT = "Per MT";
}

我的模态是这样的

public class Sale
{
    [Display(Name = "Discount")]
    public double DiscountAmount { get; set; }
    [Display(Name = "Road Tax")]
    public double RoadTaxAmount { get; set; }
}

现在在我的“销售”模型视图中,我想像这样显示属性“DiscountAmount”的标签

折扣 5%(DiscountAmount 表 + Settings.Setting1 的值 + AppConst._unitPersentage 的值)

在这里,我可以通过使用获得“DiscountAmount”的标签

 @Html.TextBoxFor(o => o.DiscountAmount)

但是如何显示其他两个成员“Settings.Setting1”和“AppConst._unitPersentage”的值

4

2 回答 2

0

您几乎没有其他选择可以尝试。如果数据仅用于显示目的,您可以使用 ViewData 或 ViewBag 或 TempData 来传递 Settings 和 AppConst 的值,只要适合您的目的。见这里

在这种情况下,如果这些是静态对象,您可以在视图中将它们称为: <Namespace>.Settings.Setting1<Namespace>.AppConst._unitPerMT

请以此为起点,并遵循适当的最佳开发实践。请不要public使用下划线声明成员。下划线通常作为private成员的前缀。

于 2013-04-15T11:30:41.057 回答
0

您可以展平模型,然后使用编辑器模板来显示复杂的标签。

扁平模型

public class CustomModel
{
    [Display(Name = "Discount")]
    public double DiscountAmount { get; set; }
    [Display(Name = "Road Tax")]
    public double RoadTaxAmount { get; set; }   
    public decimal Setting1 { get; set; }
    public string UnitPercent {get;set;}
}

模板

模板应放在EditorTemplates文件夹下的Shared文件夹内。

@model CustomModel

@{
    var inputProp = ViewData.ModelMetadata.Properties
        .First(o => o.PropertyName == "DiscountAmount");
}
<label for="@inputProp.PropertyName" id="@(inputProp.PropertyName+"Label")">
    Discount 5% (@inputProp.ShortDisplayName @Model.Setting1@Model.UnitPercent)
    <input id="@inputProp.PropertyName" type="text"
        name="@inputProp.PropertyName" />    
</label>

控制器代码

这是您将如何创建模型并将其传递给视图的方式:

return View(new CustomModel
{
    // get it from your datastore or where ever the source may be
    Setting1 = getFromDbOrSomewhere(),
    UnitPercent = AppConst._unitPersentage,                
});

你的看法

然后像这样在你的视图上使用它

@model CustomModel

@Html.EditorFor(m => Model)

这种方法的美妙之处在于您可以随时丢弃模板并在视图中执行内联 html。此外,为您的模型提供“输入 + 标签”的逻辑被分离到一个地方。

于 2013-04-15T12:38:49.173 回答