Jquery 更改下拉选择上HTML控件的状态

Jquery 更改下拉选择上HTML控件的状态,jquery,asp.net-mvc,asp.net-mvc-4,asp.net-mvc-5,Jquery,Asp.net Mvc,Asp.net Mvc 4,Asp.net Mvc 5,我有一个详细页面(Details.cshtml)。我在那页有一个下拉列表。选择值后,它应更改少数控件(启用或禁用)的状态。我到目前为止所做的 在视图中(details.cshtml) 这里的问题是Details视图只接受一个id参数。如何将附加参数“state”传递给Details,以便启用/禁用控件 这是正确的方法吗?或者有没有其他更简单的方法来解决这个问题 -艾伦- 更新 部分视图(Display.cshtml) @LabelFor(t=>t.Title.TitleId) @authori

我有一个详细页面(Details.cshtml)。我在那页有一个下拉列表。选择值后,它应更改少数控件(启用或禁用)的状态。我到目前为止所做的

在视图中(details.cshtml) 这里的问题是Details视图只接受一个id参数。如何将附加参数“state”传递给Details,以便启用/禁用控件

这是正确的方法吗?或者有没有其他更简单的方法来解决这个问题

-艾伦-

更新 部分视图(Display.cshtml)

@LabelFor(t=>t.Title.TitleId)
@authorizedActionLink(Model.TitleId.ToString(),“详细信息”,“标题”,“发布”,新的{id=Model.TitleId},null)

当选择值为1时,我想禁用@Html.LabelFor(t=>t.Title.TitleId)。

这样做不需要调用服务器(而且在任何情况下,ajax调用都不会重定向,因此
返回重定向到操作(“详细信息”,new{id=id});
有点毫无意义

停止用行为和使用来污染你的标记

注意:脚本正在将类应用于
元素,并假设您不会使用下面提到的
(否则它可能是
$(.display label')。children('label')。addClass('disabled')
;)

例如,使用css来设置元素的样式

.disabled label {
  color: grey;
}
<td class="display-label">@Html.DisplayFor(t => t.Title.TitleId)</td>
注意:脚本将使用
class=“display label”
更改所有元素,因此,如果需要更具体的内容,您可能需要为元素
id
提供属性。而且由于您的元素不是标签(没有关联的表单控件来设置焦点)例如,元素实际上应该是
中的文本

.disabled label {
  color: grey;
}
<td class="display-label">@Html.DisplayFor(t => t.Title.TitleId)</td>
@Html.DisplayFor(t=>t.Title.TitleId)

为什么要进行ajax调用(而不仅仅是更改当前页面上控件的状态)。ajax调用不会重定向,因此
返回重定向到操作(“详细信息”,new{id=id});
是毫无意义的。我正在考虑重新发布页面并更改控件的状态。告诉我是否完全失控更新视图,以便显示两个您想要禁用的其他控件,以便我可以给您一个答案(您知道禁用的控件不会发回吗?)实际上,我忽略了一点。我需要禁用在细节视图中呈现的部分视图中的控件。我将编辑问题禁用
@Html.LabelFor(t=>t.Title.TitleId)
(您可以禁用
元素-它不是表单控件)而且您甚至似乎没有属性
Title.TitleId的表单控件,那么为什么您甚至有
元素呢?
.disabled label {
  color: grey;
}
<td class="display-label">@Html.DisplayFor(t => t.Title.TitleId)</td>