使用字符 c# 组合生成用户名
本文关键字:用户 组合 字符 | 更新日期: 2023-09-27 18:37:18
我有以下方法可以在 2 个条件下生成用户名:在 Page load
和 refresh click
上。Page load
时,它应该返回Content
,refresh 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
。如何在此处获取有效字符串?上面生成随机字符串的代码是从其他帖子中挑选的,它是返回类型的字符串,但对我来说它得到了不同的结果。在这种情况下,我需要做哪些更改?
您正在调用 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[])
构造函数来创建字符串。