【问题标题】:Linking mvc razor checkbox to razor textbox将 mvc razor 复选框链接到 razor 文本框
【发布时间】:2014-11-24 16:39:49
【问题描述】:

tl;dr 我只想在选中复选框的情况下将文本框的值保存到模型中。

首先,我知道我的代码非常混乱。我一直试图从另一个堆栈溢出问题中即兴创作我的代码,所以它首先是错误的。我想做的是我对事件有这些限制,有些是布尔值,有些是数字。例如,禁止吸烟是一个布尔值,但最小年龄是一个数字。这些是可选的,用户不必设置任何。所以我想要一个复选框,说他们想要限制,但也要将值保存到模型中。这是我目前所拥有的:

<p>
    <input type="checkbox" id="ageLowCapCB" 
    @(((Model.currentRestrictions.AgeLowCap != null) && 
      (Model.currentRestrictions.AgeLowCap != 0)) ? "checked = 'checked'" : "") 
    /> 
    Low Age Limit
    @Html.TextBoxFor(e => e.currentRestrictions.AgeLowCap, new {id = "ageLowCap"})
</p>

我所拥有的脚本/jquery 是:

$("#ageLowCapCB").click(function () {
    var isChecked = $(this).is(":checked");

    $("#ageLowCap").val(isChecked ? /*I don't know what to put here*/);
});

我从中提取的问题是使用“T”或“F”的值来表示真假,因此他们很容易填写评论部分,输入“T”:“F”就是这样。但是我需要拉取文本框的值,并将其设置为 Model.currentRestrictions.AgeLowCap 的值。有没有人对在这种奇怪的情况下该怎么做有什么好主意?

【问题讨论】:

  • 首先,无论谁对你投了反对票,都应该留下评论——否则这是一个完全没有意义的练习。呸呸呸。话虽如此,我有点同情,因为这个问题是坚不可摧的——你能总结一下你想要发生的事情吗?
  • 我希望该复选框定义是否需要对最小年龄设置上限。但如果他们这样做,我希望它从文本框中保存一个整数值。这有意义吗?
  • 是的。我会在控制器中执行此操作 - 获取复选框状态,如果选中,则保存文本框值。这似乎太简单了,如果我错过了一些基本的东西,请道歉。
  • @BrentonHawley 为什么不将该复选框值发送到其他东西和服务器端,您可以根据所有这些值确定和设置您想要的任何内容?
  • 您最好使用具有bool 属性的视图模型,然后添加[RequiredIfTrue] 属性 - 例如Foolproof - 这样您就可以立即获得客户端和服务器验证并且不需要脚本。

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


【解决方案1】:

不幸的是,有一种方法可以将您的 javascript 值传递给 c# 视图模型。但是有一些解决方法。您可以创建一个动作,它将接受您想要从 javascript 传递到 c# 的任何内容,然后当您需要传递该值时,可以通过对该动作发出 ajax 请求来完成,并且在该动作中您可以保留该值( s)。从那里你有很多选择,比如数据库、会话等。

【讨论】:

    【解决方案2】:

    据我了解,这个问题不是很清楚。我的理解是,如果选中复选框,则显示接受整数值的文本框。这些都是模型字段。

    方法一:编写一个JavaScript函数来检测Checkbox checked attr是否为真,显示文本框接受用户输入;为文本框编写函数以仅接受整数。 Onkeypress 你可以调用那个函数。

    方法 2:如果您不必在文本框中从用户那里获取整数值,则在发布后验证复选框是否被选中,如果为真,则将值分配给整数文本框。

    -谢谢

    【讨论】:

      猜你喜欢
      • 2012-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-28
      • 2014-08-03
      • 1970-01-01
      相关资源
      最近更新 更多