Asp.net 我可以在.aspx页面中使用ViewBag吗?
我必须将我的UI页面从.cshtml文件移动到.aspx文件。现在我有几个编译错误 首先,“ViewBag”在当前上下文中不存在。我不能在.aspx中使用它吗?如果不是,什么是好的替代品 其次,.cshtml页面有一个模型声明: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
@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”在控制器中输入code>,并使用@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();
}