在 ASP.NET MVC5 中使用文本框值添加更多日期时间值

Posted

技术标签:

【中文标题】在 ASP.NET MVC5 中使用文本框值添加更多日期时间值【英文标题】:add more datetime value using textbox value in ASP.NET MVC5 【发布时间】:2017-12-26 22:19:29 【问题描述】:

我是 ASP.net MVC 的新手..所以我在这里遇到了困难:

我有 3 个元素:购买日期、保修期和过期日期。购买日期是一个带有 datePicker 类的 EditorFor,因此用户可以选择一个日期。 Warranty Date 是一个 EditorFor,用户在其中输入一个整数,例如 1、3、6、12(月)。并且 Expired Period 是具有“只读”类的 EditorFor,因此用户无法修改它。 我的问题是当用户在购买日期中选择日期并在保修日期中输入值时。如何使用公式自动将值添加到过期日期:过期日期 = 购买日期 + 保修期...请帮助我...谢谢大家..

【问题讨论】:

您需要 javascript 来响应客户端事件(并且您的 ExpiredDate 不应该是表单控件 - 只是文本) 先生能不能说的详细点……非常感谢 SO 不是代码编写服务。做一些研究,然后展示你的尝试。 How to dynamically set bootstrap-datepicker's date value?的可能重复 【参考方案1】:

尝试将change 事件与购买日期保修期 联系起来,例如:

var pd=document.getElementById("<Id of Purchase Date>");
pd.onchange=function()
    calculateExpiry();
;
var wp=document.getElementById("<Id of Warranty>");
wp.onchange=function()
    calculateExpiry();
;

var we=document.getElementById("<Id of Warranty Expiry>");
function calculateExpiry()
    var d=pd.value;
    if(d==="")
    return;
    
    var w=wp.value;
    if(w==="")
    return;
    
    var a=d.split("-");//suppose your date is displayed as yyyy-mm-dd (2017-07-21)
    var m=+a[1];
    m+= +w;
    var y=0;
    if(m>12)
        y+=1;
        m-=12;
    

    we.value=+a[0]+y + "-" + a[1]-1 +"-" + +a[2]);

这是非常粗略和冗长的。您可以尝试使用 jQuery 等来进行事件处理。还要记住这里没有进行错误检查/处理。

【讨论】:

【参考方案2】:

为此,您需要在用户的网络浏览器上执行代码。 ASP.NET 不能做到这一点,因为所有代码都是在生成页面时执行的。页面发送给用户后,ASP.NET 无法更改页面。

要在用户的网络浏览器上执行代码,您需要使用Javascript

要在网页中包含Javascript,只需使用&lt;script&gt; 标记并将代码放入其中。

<script>
// Put the javascript code here
</script>

通常脚本标记在结束 &lt;/body&gt; 标记之前。所以它会做这样的事情:

<body>
    <!-- Content of the page here -->

    <script>
        // Put the javascript code here
    </script>

</body>

编辑:我刚刚看到@TheVillageIdiot 编写了代码来做你想做的事。我强烈建议你还是学习一点Javascript,因为它在 Web 开发中被大量使用。

【讨论】:

以上是关于在 ASP.NET MVC5 中使用文本框值添加更多日期时间值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 asp.net 代码中获取引导文本框值并在存储过程中作为参数发送?

发生带有 Jquery 对话框的邮箱时,asp.net 文本框值为空

获取asp.net MVC中下拉列表和文本框值的值

如何通过单击一个按钮保存 asp.net 文本框值并将该数据用于另一个按钮单击?

ASP.NET MVC5 Font-awesome in placeholder

在 asp.net MVC5 EF6 中使用流利的 api 映射表?