C# ASP.NET-用户验证并将字符输入正确的位置

3z6pesqy  于 2023-10-21  发布在  .NET
关注(0)|答案(2)|浏览(116)

我期待有一个时间字段,开始与00:00这是我想要的确切格式。
当用户输入时间时,我想读取时间并将其放置在预先分配的值中。
--Edit--删除了以前的验证代码,这些代码并不真正涉及到如何在重新加载时进行验证。

vnzz0bqm

vnzz0bqm1#

也许你可以使用内置的textmode = time。
它不是100%如你所问,但你的规格有一些“问题”。
比如说我想要10点半还是1点半
所以,10点03分的1和3没有意义,因为我可能想:

1:03
10:03
 1:30
10:30

所以,打一个1,然后一个3不能真正导致10:03,从那时起,你怎么会进入10:30?
正如我所说的,你可能最好使用默认的文本模式= time。
它会做你问的大部分,不允许用户输入非数字字符,和格式的大部分你想要的。
所以,假设我想在10:30
如果我输入1,0,3,那么这就是我得到的,例如:
标记:

<h3>enter time</h3>
        <asp:TextBox ID="txtTime" runat="server"
            TextMode="Time">
        </asp:TextBox>

所以,10点半,然后103

当然上面有AM/PM
我们只需要尝试和谷歌,看看是否可以删除上午/下午。
如果你需要超过12小时,那么再一次,上述可能对你没有帮助。

pxq42qpu

pxq42qpu2#

下面是我发现的用户类型验证。
它仍然显示他们在删除它之前输入的内容,但它是我所能得到的最接近的。
另外,如果有人知道一种方法,从事件中传递参数,而不必在函数中声明它们,这样我就可以在多个字段中重用它,传递不同的变量,那就太好了!
基本上,我设置了一个会话,每个用户基地,将持有该字段的值时,按下一个键在内存中,当释放它将通过验证检查新的值,如果它通过,那么所有的好,否则它重置值与什么是在内存存储。
在program.cs下我添加了
--代码

//Use for session control
builder.Services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();

builder.Services.AddDistributedMemoryCache();
builder.Services.AddSession(options =>
{
    options.IdleTimeout = TimeSpan.FromMinutes(30);
});

var app = builder.Build();
// end the Session Control 

// Add the Session Control then go to SessionController
app.UseSession();

在会话控制器下
--代码

using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using Products.Models;

namespace Products.Controllers
{
    public class SessionController : Controller
    {
        private readonly IHttpContextAccessor _contextAccessor;
        public SessionController(IHttpContextAccessor contextAccessor)
        {
            _contextAccessor = contextAccessor;
        }
        public FieldModel EventHandler(FieldModel model)
        {
            string sessionName = model.sessionName;
            
            if (model.keystroke == "down")
            {
                //This is passing in the current value of the field.  Just need to save it in the Session
                string fieldString = JsonConvert.SerializeObject(model);
                _contextAccessor.HttpContext.Session.SetString(sessionName, fieldString);
            }
            else if (model.keystroke == "up")
            {
                //TODO - This is passing in the new character. Get the session
                FieldModel priorModel = new FieldModel();
                string fieldString = _contextAccessor.HttpContext.Session.GetString(sessionName);
                priorModel = JsonConvert.DeserializeObject<FieldModel>(fieldString);

                bool validate = false;
                //TODO - This is passing in the new character.  Validate the value for the field
                if (model.fieldType == "time")
                {
                    if (model.fieldNewValue.Length < 5)
                        validate = true;
                }
                //TODO - If validation passes allow the update
                if (validate == true)
                {
                    //fieldString = JsonConvert.SerializeObject(model);
                    //_contextAccessor.HttpContext.Session.SetString(sessionName, fieldString);
                    
                }
                //TODO - If validation fails reset the field to the current value
                else
                {
                    //fieldString = JsonConvert.SerializeObject(priorModel);
                    //_contextAccessor.HttpContext.Session.SetString(sessionName, fieldString);
                    model = priorModel;
                }
            }
            return model;
        }
    }
}

对于网页视图,我使用了以下代码--code

<script>

    function FieldValidatorD() {
        let sessionName_ = `time`;
        let fieldID_ = `time`;
        let fieldType_ = `time`
        let keystroke_ = `down`
        let input = document.querySelector(`#` + fieldID_).value;        
        let json = {
          sessionName: sessionName_,
          fieldID: fieldID_,
          fieldType: fieldType_,
          fieldCurrentValue: input,
          fieldNewValue: input,
          keystroke: keystroke_
        };        
     //console.log(json);
        $.ajax({
            type: `json`,
            data: json,
            url: `/Session/EventHandler`,
            async: false,
            success: function (data) {
                //console.log(data);
                //console.log(data.fieldNewValue);
            }
        })
    };
    function FieldValidatorU() {
        let sessionName_ = `time`;
        let fieldID_ = `time`;
        let fieldType_ = `time`
        let keystroke_ = `up`
        let input = document.querySelector(`#`+fieldID_).value;
        let json = {
            sessionName: sessionName_,
            fieldID: fieldID_,
            fieldType: fieldType_,
            fieldCurrentValue: input,
            fieldNewValue: input,
            keystroke: keystroke_
        };
        //console.log(json);
        $.ajax({
            type: `json`,
            data: json,
            url: `/Session/EventHandler`,
            async: false,
            success: function (data) {
               //console.log(data);
               //console.log(data.fieldNewValue);
                //fill in the textbox by injecting the html into the field
                $(`#` + fieldID_).val(data.fieldNewValue);
            }
        })
    };
 

</script>

相关问题