如果我想在页面上显示整数值,我可以通过多种方式实现:
<span>@Html.DisplayFor(modelItem => item.UserId)</span>
<span>@item.UserId</span>
但是将其转换为显示值IF UserId!= 0的最佳方法是什么。但是如果UserId == 0,则显示一个空字符串。有没有办法在Razor语法中做到这一点,还是我需要前往代码?
答案 0 :(得分:7)
为int:
创建扩展方法public static class IntExtensions
{
public static string EmptyIfZero(this int value)
{
if(value == 0)
return string.Empty;
return value.ToString();
}
}
...然后在你的Razor视图中,执行:
<span>@item.UserId.EmptyIfZero()</span>
答案 1 :(得分:5)
<span>@((item.UserID == 0) ? "" : @item.UserID.ToString())</span>
OR
<span>@if(item.UserID == 0) { <span></span> }
else { @Html.DisplayFor(m => item.UserID); }
</span>
我认为你可以用一个if
条件
<span>@if(item.UserID != 0) { @Html.DisplayFor(m => item.UserID); } //the browser would render empty string by itself
要在不放置冗余(如您所说)<span>
的情况下呈现内容,请使用@:
- MVC3 Razor: Displaying html within code blocks和@: for displaying content
<span>
@if(item.UserID == 0) { } //this is redundant too
else { @Html.DisplayFor(m => item.UserID);
}
</span>
请注意,我已将}
移至下一行。 ASP.Net MVC不接受它
<span>
@if(item.UserID == 0) { @:Some content with no html tag wrapper
}
else { @Html.DisplayFor(m => item.UserID);
}
</span>
答案 2 :(得分:4)
你可以这样做:
<span>@(item.UserId != 0 ? item.UserId.ToString() : string.Empty)</span>
答案 3 :(得分:2)
我认为最好和最可重复使用的是创建模板。
所以你创建了例如UserId.vbhtml
中的~/Views/Shared/DisplayTemplates
具有以下内容:
在模板中构建所有逻辑,这就像是(我正在打字而不检查,我通常在VB中编码,因此可能会出错):
@model int
@((Model == 0) ? "" : @Model)
然后在您使用的代码中:
@Html.DisplayFor(modelItem => item.UserId, "UserId")
你也可以在你的班级中将UIHint属性放在UserId上:[UIHint("UserId")]
然后您不需要提供模板名称。
答案 4 :(得分:0)
当模型值 0 时,这是显示整数或空白的另一种方法。
型号:
[Display(Name = "User Id")]
public int UserId { get; set; }
查看:
<span>
@Html.DisplayNameFor(m => m.UserId)
</span>
<span>
@Html.TextBoxFor(m => m.UserId, new { @Value = (Model.UserId > 0 ? Model.UserId.ToString() : string.Empty) })
</span>
答案 5 :(得分:0)
就我而言,我发现这更容易:
$(document).ready(function () {
$("#myField").val("");
}
不确定这是否是你想要的,但对我来说工作正常。
答案 6 :(得分:0)
我做了一些更全面的解决方案,显示空白: - 整数:0 - 十进制:0.0 - 字符串:“0x0”或“0x0x0”
扩展类:
public static class DataTypesExtension
{
static string[] Keywords = { "0", "0.0", "0.00", "0.000", "0.0000", "0,0", "0,00", "0,000", "0,0000", "0x0", "0x0x0" };
public static string BlankIfZero(this object n)
{
string ret = string.Empty;
if (n == null)
return ret;
string sn = n.ToString().Replace(" ", "");
if (!DataTypesExtension.Keywords.Contains(sn))
ret = n.ToString();
return ret;
}
}
显示模板:
@model object
@using MyProject.Extensions;
@{
string val = Model.BlankIfZero();
@val;
}
在View Model中:
[UIHint("BlankIfZero")]
public int? MyIntProperty { get; set; }
[UIHint("BlankIfZero")]
public decimal? MyDecimalProperty { get; set; }
[UIHint("BlankIfZero")]
public string MyStringProperty { get; set; }