称我为语法书呆子,但当结果标签显示“找到 1 个结果”时,它会激怒我(不是双关语)- IOW,当它显示单数情况的复数时(顺便说一句,为什么“0”结果被认为是复数/多?)。
因此,我正在尝试在 asp.net MVC 站点/应用程序中添加代码来处理这种特殊情况。
这是相关的(我认为)代码:
HTML/剃刀:
<td id="tdNumberOfResults" colspan="3" style="font-size: 13px; padding-top: 32px; text-align: right; visibility: hidden;">
<span id="spanNumberOfResults" style="display: none; position: relative; right: 5px;">
@Html.DisplayTextFor(m => m.NumberOfResults)
</span>
jQuery:
var resultsText = jQuery.trim($("#spanNumberOfResults").text());
if (resultsText != "") {
$("#tdNumberOfResults").css("visibility", "visible");
// adding this to singularize "results" to "result" when 1 is the amount doesn't work
// if (resultsText == "1 results") {
// resultsText = "1 result";
// }
. . .
C#/剃刀:
namespace DBPReporter.Models
{
public class DBPSalesReceiptCriteriaModel : ReportModelCore
{
[LocalizedDisplayName("NumberOfResults", NameResourceType = typeof(FieldNames.FieldNames))]
public long? NumberOfResults { get; set; }
. . .
我意识到 MVC 之类的优势,但所有的抽象/间接/误导有时令人沮丧。有时我会怀念过去编程“更接近金属”的日子。当然,我昔日的日子与你昔日的日子不同,geschweige denn Eeyore 的日子。
更新
作为对我对精确语法的痴迷的报应,浏览器给了我一个类似于快速耳光的惩罚:
Parser Error
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.
Parser Error Message: Section blocks ("@section Header { ... }") cannot be nested. Only one level of section blocks are allowed.
Source Error:
Line 203:}
Line 204:
Line 205:@section MainHead
Line 206:{
Line 207: @*<link type="text/css" href="@Url.Content("~/Content/jquery-ui-1.8.16.custom.css")" rel="stylesheet" />*@
Source File: /DBPReporter/Views/DBPCriteria/ReceiptCriteria.cshtml Line: 205
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.272
...当我将代码更改为:
//alert(resultsText); <-- just "1" !?
if (resultsText.trim == "1") {
$("#spanNumberOfResults").text("1 result");
}
就好像我抚摸猫,狗咬我一样。
更新 2
好吧,上面是某种混乱的大括号不匹配或语法错误或其他东西,但是一旦我解决了这个问题,我想我就有了解决方案:我更改了控制器中的代码,即从令人愉快的斯巴达式但令人失望的一维线:
model.message = String.Format("{0} results", result.Count);
...对此:
if (result.Count == 1)
{
model.message = String.Format("{0} result", result.Count);
}
else
{
model.message = String.Format("{0} results", result.Count);
}
更新 3
在编译的路上发生了一件有趣的事情:
我试图格式化文档,它抱怨它不能这样做,因为这行:
<span style="background-color: #e55302; color: hsla(360, 100%, 100%, 1); font-family: "Segoe UI", Verdana, sans-serif; display: inline-block; font-weight: bold; padding: 3px; position: relative; right: 0px; width: 300px;" >
然后我删除了“Segoe UI”,再次尝试,它符合文档的重新格式化。但是......它“缩小”了我的代码!我最终得到:
$("#FormSalesTotalMin, #FormSalesTotalMax").autoNumeric( { mNum: 5, mDec: 2, aNeg:
'', aSep: ',' }); $("#FormDeptBegin, #FormDeptEnd").autoNumeric( { mNum: 5, mDec:
0, aNeg: '', aSep: '' }); $("#PasteUPCs").click(function(e) { if (jQuery.trim($("#PasteUPCs").val())
== "") $("#PasteUPCs").val(""); }); $("#submit_button").click(function() { $("#tdNumberOfResults").css("visibility",
(ETC。)
多亏了 Ctrl+Z,这种自我沙丁鱼化只是暂时的,但我有时仍然想知道 Visual Studio 是否“过度用药”。
更新 4
恩里克走在正确的轨道上。但这是反馈过去的样子:
......这就是它现在的样子: