Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 我可以在.aspx页面中使用ViewBag吗?_Asp.net_Asp.net Mvc_Razor_Models_Viewbag - Fatal编程技术网

Asp.net 我可以在.aspx页面中使用ViewBag吗?

Asp.net 我可以在.aspx页面中使用ViewBag吗?,asp.net,asp.net-mvc,razor,models,viewbag,Asp.net,Asp.net Mvc,Razor,Models,Viewbag,我必须将我的UI页面从.cshtml文件移动到.aspx文件。现在我有几个编译错误 首先,“ViewBag”在当前上下文中不存在。我不能在.aspx中使用它吗?如果不是,什么是好的替代品 其次,.cshtml页面有一个模型声明: @model myProject.Models.Navigation 我对其进行了更改,以便它在.aspx页面中工作,如下所示: <%@ Import Namespace="myProject.Models" %> 我将其替换为: <% forea

我必须将我的UI页面从.cshtml文件移动到.aspx文件。现在我有几个编译错误

首先,“ViewBag”在当前上下文中不存在。我不能在.aspx中使用它吗?如果不是,什么是好的替代品

其次,.cshtml页面有一个模型声明:

@model myProject.Models.Navigation
我对其进行了更改,以便它在.aspx页面中工作,如下所示:

<%@ Import Namespace="myProject.Models" %>
我将其替换为:

<% foreach (myProject.Models.Navigationitem item in Model.navigationItems){...
您的页面应该有

<%@ Page Title="" Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage(Of myProject.Models.Navigation)" %>


在顶部指定模型类型。

WebForms通常不使用
视图包,这只是在ASP.Net MVC中使数据可供查看的一种方法。使用WebForms,使数据可供“视图”(包含HTML的aspx页面)使用的一个好方法是公开包含该数据的属性

MVC的方法可能是设置
ViewBag.MyValue=“Some Value”,并使用
@ViewBag.MyValue
在视图中引用它。要在WebForms中执行等效操作,您首先要在codebehind中定义一个属性:

protected string MyValue { get; set; }
然后,在某个地方设置该值,可能是在您的
页面\u Load

protected void Page_Load (object sender, EventArgs e)
{
    this.MyValue = "Some Value";
}
并使用WebForms语法在页面上写入值:

<h1><%= MyValue %></h1>

定义了属性和值集后,上面为ASPX编写的代码应该可以正常工作。

我可以问一下为什么要从Razor转到ASPX吗?人们朝相反的方向移动是有原因的。你是否也从MVC转向了Web表单,或者你还在做MVC?@mason你是对的,但是如果他想改变,他还是要处理动态ViewState:请找到这篇文章,希望它能解决你的问题。网-WebForms@Vivek我们不要假设Web表单。ASPX可以与MVC一起使用,这是一个有效的问题。我正在使用使用asp.net经典版和web表单的遗留代码库。我以为我可以偷偷进入一个MVC页面,但我对asp.net还不够了解,不知道如何让它工作,这导致了许多服务器错误。解决方案是完全消除MVC,并使用web表单重写http请求。我急切地期待着进入一个使用现代技术的项目!
<h1><%= MyValue %></h1>
protected MyProject.Models.Navigation Model { get; set; }

protected void Page_Load (object sender, EventArgs e)
{
    this.Model = SomeMethodThatReturnsModel();
}