相关疑难解决方法(0)

ASP.NET MVC剃刀:HTML中的条件属性

下面的代码看起来不干净.有什么改进代码的建议吗?

<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 razor asp.net-mvc-3

75
推荐指数
5
解决办法
9万
查看次数

根据Html.TextBoxFor的条件设置禁用属性

我想根据下面的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,我想禁用文本框,否则我想启用它

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

74
推荐指数
9
解决办法
12万
查看次数

比较盒装值类型

今天我偶然发现了一个有趣的错误.我有一组属性可以通过一般的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# boxing unboxing equality

35
推荐指数
2
解决办法
8261
查看次数

MVC3有条件地禁用Html.TextBoxFor()

我有一个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()控件?

conditional html.textbox asp.net-mvc-3

28
推荐指数
5
解决办法
5万
查看次数

有条件地禁用Html.DropDownList

如何更改此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)

asp.net-mvc

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

getElementByClass().setAttribute不起作用

为什么当我写作

document.getElementByClass('home1').setAttribute('style', 'background-image:url(img/red_menu.PNG);');
Run Code Online (Sandbox Code Playgroud)

它不起作用?我有元素class="home1"

document.getElementById('home1')... 作品很好,谢谢

html javascript

6
推荐指数
2
解决办法
2万
查看次数

在客户端将 MVC 复选框设置为只读(或禁用)

我们有几个 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)

这似乎是一个常见问题,但是在我所有的研究中,我还没有找到一个好的客户端解决方案。


这是我的研究:

复选框上的只读并不总是适用于所有浏览器:

HTML 复选框可以设置为只读吗?

如何将复选框设为只读?没被禁用?

在 MVC 中使用 'disabled' 会导致没有值被回发:

如果禁用,Html.CheckBox 返回 false,即使已选择

http://davecallan.com/posting-disabled-checkboxes-mvc-razor-views/

可以在剃刀代码中实现条件“禁用” :

Asp .net mvc 3 CheckBoxFor 方法输出隐藏字段,当复选框被选中为 true 时,该隐藏字段值为 false

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

然而,这些不是客户端解决方案。

html checkbox asp.net-mvc jquery readonly

2
推荐指数
1
解决办法
5407
查看次数