ViewBag中的System.Random不显示为字符串?

时间:2015-05-07 00:02:33

标签: c# asp.net-mvc razor random viewbag

我要做的就是在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号的最简单方法吗?感谢任何帮助,谢谢!

2 个答案:

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