变量strCSSClass通常具有值,但有时为空.
我不想在这个输入元素的HTML中包含一个空的class ="",这意味着如果strCSSClass为空,我根本不需要class =属性.
以下是执行条件HTML属性的一种方法:
<input type="text" id="@strElementID" @(CSSClass.IsEmpty() ? "" : "class=" + strCSSClass) />
Run Code Online (Sandbox Code Playgroud)
有更优雅的方式吗?特别是我可以遵循与元素的其他部分使用相同的语法:class ="@ strCSSClass"?
我有一个ASP.Net MVC 3 Web应用程序,我正在使用HtmlHelper类向视图页面添加一个复选框,就像这样......
@Html.CheckBox("CheckBox1", true, new { @class = "Class1" })
Run Code Online (Sandbox Code Playgroud)
我想要做的是根据视图状态属性有条件地添加disabled属性.基本上以下是理想的......
@Html.CheckBox("CheckBox1", true, new { @class = "Class1", @disabled = Model.ReadOnly })
Run Code Online (Sandbox Code Playgroud)
遗憾的是,由于disabled属性的性质,这将不起作用,因为分配给disabled属性的任何值(甚至"false")都将转换为true.
我已经想到了一些解决这个问题的解决方案,所以问题不是我怎么能这样做.但是,有一种简单的方法,如上面所需的方法?或者我是否必须诉诸以下其中一项?
我知道我能做什么......
创建一个if/else语句并写入不同的Html.CheckBox行(对于可读性而言不是很好 - 并且可能会抛出标记警告 - 不确定)
跳过HtmlHelper类并手写标记以允许更好的条件属性(保持代码更短,但增加了不一致性)
创建一个自定义帮助程序,它采用"禁用"参数(最干净的解决方案,但需要不需要的额外方法 - 可能是目前为止最好的选择)
我的一个观点是以下剃刀代码:
@if (item.PMApproved != true) {
<input type="button" class="btnresetinvoice button" value="Reset" data-invoiceid="@item.InvoiceId" />
}
else {
<input type="button" class="btnresetinvoice button" value="Reset" data-invoiceid="@item.InvoiceId" disabled="disabled" />
}
Run Code Online (Sandbox Code Playgroud)
非常粗糙.基本上我想在某个条件下禁用该按钮,因为您可以从代码中解决问题.这样做更理想的方式是什么?
在标签中我想要有条件地输出样式属性,例如:<li style="@styleVar" >...</li>
当styleVar为null时,它不应该由razor编写(只是Razor 2中假设的标准功能),但出于某些奇怪的原因,它输出为<li style="">...</li>,而我期望<li>...</li>.
这是部分视图.在正常视图中,它正在工作.这是部分视图中的错误吗?
有人有同样的经历吗?
我想有条件地readonly在<input>. 在 Razor 的 ASP.NET Core 方言中,属性的解释与 System.Web.Mvc 略有不同。
在 System.Web.Mvc 我曾经这样做:
<input name="Name" class="form-control" @(Model.MyCondition ? "readonly" : "") />
Run Code Online (Sandbox Code Playgroud)
在 ASP.NET Core 中,同样不起作用:没有错误,但也没有呈现该属性。
<input asp-for="Name" class="form-control" @(Model.MyCondition ? "readonly" : "" ) />
Run Code Online (Sandbox Code Playgroud)
一旦属性出现在 HTML 中,它就会被强制执行,所以我不能对属性的值做任何事情。此代码段将导致输入始终为只读:
<input asp-for="Name" class="form-control" readonly="@(Model.MyCondition ? "readonly" : "" )" />
Run Code Online (Sandbox Code Playgroud)
现在,我可以通过创建一个响应标签的标签助手来解决这个问题is-readonly,但这对于如此简单的事情来说似乎非常复杂。
如何在不求助于自定义标签助手的情况下有条件地呈现无值属性?