我需要使用MVC架构创建一个应用程序。我需要为我的应用程序的用户生成5位数的随机数字。我的意思是,这个方法放在控制器用户身上,生成数字并在列表中显示它(用户+数字符号),如密码
你知道吗?对不起我的英语不好。 我需要它进行测试public class User
{
[Key]
public int UserId { get; set; }
public int Code { get; set; }
public string Name { get; set; }
}
public ActionResult GenerateNumbers( User user)
{
Random rand = new Random();
int numero = rand.Next(1, 10000);
return View();
var nuevoCodigo = new User
{
Name = user.Name,
Code = numero,
};
db.Users.Add(nuevoCodigo);
}
答案 0 :(得分:0)
您应该将操作更改为:
public ActionResult GenerateNumbers( User user)
{
Random rand = new Random();
int numero = rand.Next(10000, 99999);
var nuevoCodigo = new User
{
Name = user.Name,
Code = numero,
};
db.Users.Add(nuevoCodigo);
//You should commit your context here also
return View(db.Users); // Pass user list as your model to view
}
答案 1 :(得分:0)
您总是需要5位数代码,或者可以是1到5位数。
public ActionResult GenerateNumbers( User user)
{
//first approach
var nuevoCodigo = new User
{
Name = user.Name,
Code = GenerateCode()
};
//second approach
var nuevoCodigo = new User
{
Name = user.Name
Code =GenerateCode(5)
};
db.Users.Add(nuevoCodigo);
return View(db.Users);
}
private int GenerateCode()
{
Random rand = new Random();
return rand.Next(10000, 99999);//change 10000 to 1 if code should be 1 digit
}
public int GenerateCode(int length)
{
Random random = new Random();
const string chars = "0123456789";
string code = new string(Enumerable.Repeat(chars, length)
.Select(s => s[random.Next(s.Length)]).ToArray());
return Convert.ToInt32(code);
}
答案 2 :(得分:0)
最重要的部分是使用User
viewmodel返回视图,然后将生成的代码格式化为带有numeric format specifier的5位数代码,您可以尝试这种方法:
<强>控制器强>
public ActionResult GenerateNumbers(User user)
{
Random rand = new Random();
int numero = rand.Next(1, 100000);
var nuevoCodigo = new User
{
Name = user.Name,
Code = numero
};
using (var db = new UserEntities())
{
db.Users.Add(nuevoCodigo);
db.SaveChanges();
}
// return view page with assigned viewmodel properties
return View(nuevoCodigo);
}
查看强>
@* using 'D' format specifier to show the value, including zeros *@
@Html.TextBoxFor(model => model.Code, "{0:D5}", null)
注意:Random.Next
的maxValue
参数是返回的随机数的独占上限(不计入数字生成的一部分,与minValue
不同),因此如果您想指定00001
到99999
之间的数字,maxValue
应为100000
。
简单演示:.NET Fiddle