使用字符 c# 组合生成用户名

本文关键字:用户 组合 字符 | 更新日期: 2023-09-27 18:37:18

我有以下方法可以在 2 个条件下生成用户名:在 Page loadrefresh click 上。Page load时,它应该返回Contentrefresh click它应该返回Json 。所以我决定连接一个ActionResult如下:

[HttpGet]
public ActionResult GenerateUName(string calltype)
{
     using (_db = new DBEntity())
     {
           const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
           int length = 10;
           var random = new Random();
           string uname = string.Empty;
           bool exists = true;
           int repeat = 0;
           while (exists && repeat < 5)
           {
               uname = Convert.ToString(Enumerable.Repeat(chars, length).Select(s => s[random.Next(s.Length)]).ToArray());
               exists = _db.tblUsers.Any(u => u.UserName == uname);
               repeat++;
           }
           TempData["generatedUName"] = !string.IsNullOrEmpty(uname) ? uname : string.Empty;
           if (calltype == "action")
                 return Content(uname);
           return Json(new { username = uname, result = true }, JsonRequestBehavior.AllowGet);
    }
}

在页面加载中,我收到它作为

user.UserName = Convert.ToString(TempData["generatedUName"]);

但是每当我运行它时,我都会得到System.Char[]作为json响应,并在上面的Page Load System.Web.Mvc.ContentResult。如何在此处获取有效字符串?上面生成随机字符串的代码是从其他帖子中挑选的,它是返回类型的字符串,但对我来说它得到了不同的结果。在这种情况下,我需要做哪些更改?

使用字符 c# 组合生成用户名

您正在调用 Convert.ToString(char[]) ,它不会以您期望的方式创建字符串。它正在执行等效的char[].ToString(),这为您提供了类型名称System.Char[]

发生这种情况的原因是没有接受char[]参数的Convert.ToString()重载,因此它改为调用Convert.ToString(object)重载。Convert.ToString(object)的实现只是返回object.ToString().

试试这个:

uname = new string(Enumerable.Repeat(chars, length).Select(s => s[random.Next(s.Length)]).ToArray());

即使用 String(char[]) 构造函数来创建字符串。