【问题标题】:How to check if a RadioButton is checked in Razor?如何检查 Razor 中是否选中了 RadioButton?
【发布时间】:2016-02-19 08:23:58
【问题描述】:

我在一个cshtml文件中有以下几行代码,

<div class="YesNo">
    <label><input type="radio" name="YesNo_@pNum" value="Yes" />@yesLabel</label>
    <label><input type="radio" name="YesNo_@pNum" value="No" checked />@noLabel</label>
</div>

如何在 Razor 中使用 if 条件来检查“是”单选按钮是否被选中,然后只显示某个标签?

我的模型中有这两个属性,

public string YesLabel { get { return COff.YesLabel ?? "Yes"; } }
public string NoLabel { get { return COff.NoLabel ?? "No"; } }

我在 cshtml 文件中也有 2 个变量,

var yesLabel = off.YesLabel;
var noLabel = off.NoLabel;

我的一个 .cs 文件中有这 2 个属性,

public string YesLabel { get; set; }
public string NoLabel { get; set; }

我使用了这个 JS 代码并且它有效,但是由于我的“否”单选按钮已经被选中,我无法获得所需的输出,也就是说,如果我在访问页面后选择“是”,我看不到我的代码工作,因为总是在内存中检查“否”,

$(function () {                       
    var checkedRadio = $('[name="YesNo_@placementNumber"]:radio:checked').val();
    if (checkedRadio == "Yes") {
        $("#sel").html("Selected Value: " + checkedRadio);
    }
});

感谢任何帮助。

【问题讨论】:

  • 我认为您想在 javascript 中执行此操作,razor 仅在发送到客户端时执行,如果您希望这种情况一旦发生就可以了,但如果您希望它被绑定,您需要使用javascript
  • @johnny 5 我确实使用了我的 JS 代码。我可以使用 JS 更改检查的值吗?
  • 真的不清楚你想做什么。是否要将 "Selected Value" 输出移动到 change 事件?

标签: c# html asp.net-mvc asp.net-mvc-4 razor


【解决方案1】:

我不确定这是否是您的问题,但我看到您认为您有name="YesNo_@pNum"。我猜@pNum 是一个服务器端变量,输出是name="YesNo_X"。然后在 JS 中你有 $('[name="YesNo_@placementNumber"],它永远不会起作用,因为那不是 radio 的名称。

如果placementNumber 是 JS 变量,则解决方案是更改选择器:

$('[name="YesNo_' + placementNumber + '"]:radio:checked')

如果您的 JS 中没有变量 placementNumber,您可以在包装收音机的 div 中添加一个 id,然后选择它,如下所示:

<div class="YesNo" id="radios">
    <label><input type="radio" name="YesNo_@pNum" value="Yes" />@yesLabel</label>
    <label><input type="radio" name="YesNo_@pNum" value="No" checked />@noLabel</label>
</div>

然后获取检查值:

var checkedRadio = $('#radios :radio:checked').val();

我认为您的问题可能是您希望您的代码在选中的收音机更改时运行。我相信这可能是因为:

我没有看到我的代码在工作,因为内存中总是检查“否”

那么,你需要做的是:

$(function () {                       
    var radios = $('[name="YesNo_@placementNumber"]:radio');
    radios.on("change", function() {
        if ($(this).prop("checked")) {
            $("#sel").html("Selected Value: " + $(this).val());
        }
    });
});

【讨论】:

  • 你给出的解释对我有用,我现在更好地理解了代码!
  • @dsingh23,我很高兴它有帮助。只是出于好奇,你的问题是什么? Razor / JS 变量或更改事件?
  • 问题是“否”总是在内存中检查,通过使用您的解决方案,JS 代码,它起作用了!
【解决方案2】:

Razor 是一个服务器端工具。页面已加载后它无法工作。当客户端和服务器之间存在“来回”时,它不像在网络表单上。

您可以使用 JS 进行检查,也可以使用事件来了解输入何时更改。

您将标签存储在 JS 变量上,或将它们放置在隐藏的跨度上,根据您的复选框打开和关闭它们。

例如:

var noLabel = '@noLabel';
var yesLabel = '@yesLabel';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-28
    • 2016-07-03
    • 2017-07-21
    • 2016-12-19
    • 2019-11-19
    • 2013-12-25
    • 1970-01-01
    相关资源
    最近更新 更多