下面的代码看起来不干净.有什么改进代码的建议吗?
<li @if(ViewData["pagename"].ToString()=="Business details"){ <text>class="active" </text> } >
<a @if(ViewData["pagename"].ToString()=="Business details"){ <text>style="color: white; background-color: #08C; border: 1px solid #08C;" </text> }
href="@Url.Action("BusinessDetails", "Business")">Business Details</a>
</li>
<li @if (ViewData["pagename"].ToString() == "Booking policies"){ <text>class="active"</text> }>
<a @if (ViewData["pagename"].ToString() == "Booking policies")
{ <text>style="color: white; background-color: #08C; border: 1px solid #08C;" </text> }
href="@Url.Action("BookingPolicies", "Business")">Booking policies</a>
</li>
Run Code Online (Sandbox Code Playgroud) 我想根据下面的asp.net MVC中的Html.TextBoxFor条件设置disable属性
@Html.TextBoxFor(model => model.ExpireDate, new { style = "width: 70px;", maxlength = "10", id = "expire-date" disabled = (Model.ExpireDate == null ? "disable" : "") })
Run Code Online (Sandbox Code Playgroud)
该助手有两个输出禁用="禁用"或禁用="".两个主题都使文本框禁用.
如果Model.ExpireDate == null,我想禁用文本框,否则我想启用它
今天我偶然发现了一个有趣的错误.我有一组属性可以通过一般的setter设置.这些属性可以是值类型或引用类型.
public void SetValue( TEnum property, object value )
{
if ( _properties[ property ] != value )
{
// Only come here when the new value is different.
}
}
Run Code Online (Sandbox Code Playgroud)
在为此方法编写单元测试时,我发现值类型的条件始终为真.我花了很长时间才弄清楚这是由于拳击/拆箱.我没有花太多时间将代码调整为以下内容:
public void SetValue( TEnum property, object value )
{
if ( !_properties[ property ].Equals( value ) )
{
// Only come here when the new value is different.
}
}
Run Code Online (Sandbox Code Playgroud)
问题是我对这个解决方案并不完全满意.我想保留一个简单的参考比较,除非该值被加框.
我想到的当前解决方案只是要求Equals()盒装值.这样做的装箱值的检查似乎有点矫枉过正.是不是有更简单的方法?
我有一个C#.Net网络应用程序.在该应用程序中,我需要根据登录系统的人有条件地禁用Html.TextBoxFor控件(也包括Html.DropDownListFor控件).我试过用
@Html.TextBoxFor(model => model.ProposalName, new { @ViewBag.IsDisabled })
Run Code Online (Sandbox Code Playgroud)
在Controller中@ViewBag.IsDisabled设置为String.Empty或"disabled"的位置.然而,这呈现为IsDisabled='disabled'或IsDisabled=""因此控制没有被禁用.当我尝试
@Html.TextBoxFor(model => model.ProposalName, new { @ViewBag.Disabled })
Run Code Online (Sandbox Code Playgroud)
即使不ViewBag.Disabled包含文本,控件也始终处于禁用状态.如何有条件地禁用Html.TextBoxFor()控件?
如何更改此DropDownList声明,以便有条件地启用/禁用disabled属性?
<%= Html.DropDownList("Quantity", new SelectList(...), new{@disabled="disabled"} %>
Run Code Online (Sandbox Code Playgroud)
非工作的例子:
<%= Html.DropDownList("Quantity", new SelectList(...), new{@disabled=Model.CanEdit?"false":"disabled"} %>
Run Code Online (Sandbox Code Playgroud)
ps在整个语句周围添加if条件不是一个理想的方法:)
编辑:根据这个扩展方法从另一个问题我提出了以下扩展:
public static IDictionary<string, object> Disabled (this object obj, bool disabled)
{
return disabled ? obj.AddProperty ("disabled", "disabled") : obj.ToDictionary ();
}
Run Code Online (Sandbox Code Playgroud)
然后可以用作
<%= Html.DropDownList("Quantity", new SelectList(...), new{id="quantity"}.Disabled(Model.CanEdit) %>
Run Code Online (Sandbox Code Playgroud) 为什么当我写作
document.getElementByClass('home1').setAttribute('style', 'background-image:url(img/red_menu.PNG);');
Run Code Online (Sandbox Code Playgroud)
它不起作用?我有元素class="home1"
与document.getElementById('home1')...
作品很好,谢谢
我们有几个 MVC 复选框,例如:
@Html.CheckBoxFor(model => model.hasData, …)
Run Code Online (Sandbox Code Playgroud)
我们有条件客户端代码,需要将 div 中的所有控件设置为只读(包括这些复选框):
if (someCondition) {
$('#' + divIdToDisable + ' input').attr('readonly', 'true');
}
Run Code Online (Sandbox Code Playgroud)
我们了解到 readonly 在复选框上不能正常工作(见下文)。
我尝试了以下操作,但这会导致在“保存”期间没有数据回传(另请参见下文):
$('#' + divIdToDisable + ' input').attr('disabled', 'true');
Run Code Online (Sandbox Code Playgroud)
这似乎是一个常见问题,但是在我所有的研究中,我还没有找到一个好的客户端解决方案。
复选框上的只读并不总是适用于所有浏览器:
在 MVC 中使用 'disabled' 会导致没有值被回发:
如果禁用,Html.CheckBox 返回 false,即使已选择
http://davecallan.com/posting-disabled-checkboxes-mvc-razor-views/
可以在剃刀代码中实现条件“禁用” :
Asp .net mvc 3 CheckBoxFor 方法输出隐藏字段,当复选框被选中为 true 时,该隐藏字段值为 false
MVC 3:使用 HtmlHelpers 有条件地添加禁用属性
然而,这些不是客户端解决方案。
asp.net-mvc ×4
html ×2
razor ×2
boxing ×1
c# ×1
checkbox ×1
conditional ×1
equality ×1
html-helper ×1
html.textbox ×1
javascript ×1
jquery ×1
readonly ×1
unboxing ×1