相关疑难解决方法(0)

使用Razor MVC3的条件HTML属性

变量strCSSClass通常具有值,但有时为空.

我不想在这个输入元素的HTML中包含一个空的class ="",这意味着如果strCSSClass为空,我根本不需要class =属性.

以下是执行条件HTML属性的一种方法:

<input type="text" id="@strElementID" @(CSSClass.IsEmpty() ? "" : "class=" + strCSSClass) />
Run Code Online (Sandbox Code Playgroud)

有更优雅的方式吗?特别是我可以遵循与元素的其他部分使用相同的语法:class ="@ strCSSClass"?

html razor asp.net-mvc-3

96
推荐指数
3
解决办法
12万
查看次数

MVC 3:使用HtmlHelpers有条件地添加禁用属性

我有一个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.

我已经想到了一些解决这个问题的解决方案,所以问题不是我怎么能这样做.但是,有一种简单的方法,如上面所需的方法?或者我是否必须诉诸以下其中一项?

我知道我能做什么......

  1. 创建一个if/else语句并写入不同的Html.CheckBox行(对于可读性而言不是很好 - 并且可能会抛出标记警告 - 不确定)

  2. 跳过HtmlHelper类并手写标记以允许更好的条件属性(保持代码更短,但增加了不一致性)

  3. 创建一个自定义帮助程序,它采用"禁用"参数(最干净的解决方案,但需要不需要的额外方法 - 可能是目前为止最好的选择)

asp.net-mvc html-helper asp.net-mvc-3

69
推荐指数
4
解决办法
4万
查看次数

如何更优雅地禁用按钮

我的一个观点是以下剃刀代码:

@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)

非常粗糙.基本上我想在某个条件下禁用该按钮,因为您可以从代码中解决问题.这样做更理想的方式是什么?

html razor asp.net-mvc-3

22
推荐指数
4
解决办法
3万
查看次数

Razor条件属性不起作用

在标签中我想要有条件地输出样式属性,例如:<li style="@styleVar" >...</li> 当styleVar为null时,它不应该由razor编写(只是Razor 2中假设的标准功能),但出于某些奇怪的原因,它输出为<li style="">...</li>,而我期望<li>...</li>.

这是部分视图.在正常视图中,它正在工作.这是部分视图中的错误吗?

有人有同样的经历吗?

asp.net-mvc-4 razor-2

4
推荐指数
3
解决办法
4751
查看次数

ASP.NET Core Razor:没有值的条件属性

我想有条件地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,但这对于如此简单的事情来说似乎非常复杂。

如何在不求助于自定义标签助手的情况下有条件地呈现无值属性?

razor asp.net-core

4
推荐指数
1
解决办法
3354
查看次数