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();
    }