我无法在MVC中使用Tempdata的属性

时间:2019-05-16 05:11:52

标签: c# asp.net asp.net-mvc

我有一个用于从静态变量中使数据出队的按钮,然后我需要在视图上呈现特定的属性,但是由于某种原因,即使我已经使用了名称空间,也无法呈现它。

这是我的控制器:

    public ActionResult BtnNext()
    {
        var first = MyQueue.todayQueue.Dequeue();

        TempData["QueueItem"] = first;

        return PartialView("_queuenumber");
    }

这是我的观点:

        @{
            var item = (MyQueue)TempData["QueueItem"];
        }
        <p>@item.QueueNumber</p>

这是我的课程:

public class MyQueue
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int MyQueueId { get; set; }
    [Required]
    public string Name { get; set; }

    public string QueueNumber
    {
        get
        {
            return string.Format("{0}{1:000}", ServiceLetter ?? "?", MyQueueId);
        }
        set { }
    }

    public static Queue<MyQueue> todayQueue = new Queue<MyQueue>();

    public int ServiceId { get; set; }
    public string ServiceLetter { get; set; }

    public virtual Service Service { get; set; }
}

这看起来不错并且可以正常工作,但是由于某种原因,我收到了错误消息。 错误看起来像这样。

错误消息:
“找不到类型或名称空间名称'MyQueue'(您是否缺少using指令或程序集引用?)”

2 个答案:

答案 0 :(得分:3)

您必须将程序集的完整参考提供给类

)

在视图中无法直接访问类库引用,因此您需要提供对类的完整引用

答案 1 :(得分:0)

您必须在视图中指定或导入名称空间。您既可以指定@Ahsam Aslam的答案,也可以指定名称空间using,还可以使用as关键字在兼容的引用类型或可为空的类型之间进行转换。

例如,您的命名空间是DataStructure,然后

@using DataStructure
@{
        var item = TempData["QueueItem"] as MyQueue;
 }

您可以将TempData转换为兼容的引用类型。

我希望它可以帮助您让我知道是否需要更多信息。