我要做的就是在Controller中创建一个随机数并将其传递给View。但是,当我运行应用程序时,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>
对不起,View有点乱,但我尝试了所有可以找到的方法。我错过了什么?我真的不想改变模型。我试着谷歌搜索了几个小时,没有任何东西可以解决我的问题。这也是为产品创建随机ID号的最简单方法吗?感谢任何帮助,谢谢!
答案 0 :(得分:3)
Random.Next
实际上返回一个值,并且根本不会改变Random
对象。只需在ToString
对象上调用Random
即可返回&#34; System.Random&#34; (因为它不会覆盖ToString
。
您需要将生成的值放在ViewBag中:
public ActionResult Create()
{
Random random = new Random(Guid.NewGuid().GetHashCode());
int randomID = random.Next(20, 5000);
ViewBag.random = randomID.ToString();
return View();
}
答案 1 :(得分:2)
randomId.Next()返回一个整数,你需要更像这样的东西:
// 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();
}