System.Random 在 ViewBag 中未显示为字符串?
System.Random in ViewBag not displaying as string?
我想做的就是在控制器中创建一个随机数并将其传递给视图。但是,当我 运行 应用程序时,视图仅显示 'System.Random' 而不是生成的值。
这是我的控制器:
// GET: /Products/Create
public ActionResult Create()
{
Random randomID = new Random(Guid.NewGuid().GetHashCode());
randomID.Next(20, 5000);
ViewBag.random = randomID.ToString();
ViewData["random"] = randomID.ToString();
TempData["random"] = randomID.ToString();
return View();
}
我尝试了 ViewBag、ViewData 和 TempData,它们都显示 'System.Random.'
这是我的看法:
@model application.Models.Product
@{
ViewBag.Title = "Create Product";
}
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<hr />
@Html.ValidationSummary(true)
<div class="form-group">
@Html.LabelFor(model => model.Product_ID, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextBoxFor(model => model.Product_ID, new { @readonly = "readonly" })
@Html.TextBox("random", (string)@ViewBag.random, new { @readonly = true })
@ViewBag.random
@ViewData["random"]
@TempData["random"]
@Html.ValidationMessageFor(model => model.Product_ID)
</div>
</div>
很抱歉视图有点乱,但我尝试了所有我能找到的方法。我错过了什么?我真的不想改变模型。我用谷歌搜索了几个小时,但没有什么能解决我的问题。这也是为产品创建随机 ID 号的最简单方法吗?如有任何帮助,我们将不胜感激谢谢!
randomId.Next() returns 一个整数,你需要更多这样的东西:
// GET: /Products/Create
public ActionResult Create()
{
Random randomID = new Random(Guid.NewGuid().GetHashCode());
int randomNumber = randomID.Next(20, 5000);
ViewBag.random = randomNumber.ToString();
return View();
}
Random.Next
实际上 returns 一个值,并且根本不会改变 Random
对象。简单地在 Random
对象上调用 ToString
将始终 return "System.Random"(就像其他每个 class 不覆盖 ToString
一样)。
您需要将生成的值放入ViewBag:
public ActionResult Create()
{
Random random = new Random(Guid.NewGuid().GetHashCode());
int randomID = random.Next(20, 5000);
ViewBag.random = randomID.ToString();
return View();
}
我想做的就是在控制器中创建一个随机数并将其传递给视图。但是,当我 运行 应用程序时,视图仅显示 'System.Random' 而不是生成的值。
这是我的控制器:
// GET: /Products/Create
public ActionResult Create()
{
Random randomID = new Random(Guid.NewGuid().GetHashCode());
randomID.Next(20, 5000);
ViewBag.random = randomID.ToString();
ViewData["random"] = randomID.ToString();
TempData["random"] = randomID.ToString();
return View();
}
我尝试了 ViewBag、ViewData 和 TempData,它们都显示 'System.Random.'
这是我的看法:
@model application.Models.Product
@{
ViewBag.Title = "Create Product";
}
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<hr />
@Html.ValidationSummary(true)
<div class="form-group">
@Html.LabelFor(model => model.Product_ID, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextBoxFor(model => model.Product_ID, new { @readonly = "readonly" })
@Html.TextBox("random", (string)@ViewBag.random, new { @readonly = true })
@ViewBag.random
@ViewData["random"]
@TempData["random"]
@Html.ValidationMessageFor(model => model.Product_ID)
</div>
</div>
很抱歉视图有点乱,但我尝试了所有我能找到的方法。我错过了什么?我真的不想改变模型。我用谷歌搜索了几个小时,但没有什么能解决我的问题。这也是为产品创建随机 ID 号的最简单方法吗?如有任何帮助,我们将不胜感激谢谢!
randomId.Next() returns 一个整数,你需要更多这样的东西:
// GET: /Products/Create
public ActionResult Create()
{
Random randomID = new Random(Guid.NewGuid().GetHashCode());
int randomNumber = randomID.Next(20, 5000);
ViewBag.random = randomNumber.ToString();
return View();
}
Random.Next
实际上 returns 一个值,并且根本不会改变 Random
对象。简单地在 Random
对象上调用 ToString
将始终 return "System.Random"(就像其他每个 class 不覆盖 ToString
一样)。
您需要将生成的值放入ViewBag:
public ActionResult Create()
{
Random random = new Random(Guid.NewGuid().GetHashCode());
int randomID = random.Next(20, 5000);
ViewBag.random = randomID.ToString();
return View();
}