1

好的,所以我正在使用 ASP.NET MVC 3 项目。当我第一次开始学习 C# ASP.NET 时,我为控制器操作创建了一个强类型视图。然而,我现在意识到我不再需要那个模型(我的视图被强类型化到的模型)了。我怎样才能摆脱模型?我尝试将它从项目中排除,但是当我在 VS2010 中编译我的项目时,它说The page not found. 有什么方法可以撤消 VS2010 中的强类型部分,并且仍然能够在我的视图中保留和显示内容?

编辑:

@using IntraNet.Areas.Roc.Models.ViewModels; @* This is for SiteLookupVM *@
@{ Layout = "~/Views/Shared/_LayoutIntranet.cshtml"; }

<div id="mdPageHdr">FindnSave Metrics</div>
@Html.Partial("_PartialSiteLookup", (SiteLookupVm) ViewBag.SiteLookup)




@if (ViewBag.SiteId > 0)
{   @Html.ActionLink("Bounce Metrics", "BounceMetrics", "Metrics",new { siteId =     @ViewBag.SiteId }, null)
@Html.Partial("_PartialChartDisplay")
}
else
{ 
<div id="tabsWrapper">
<ul id="tabs_menu">
<li>@Html.ActionLink("Page Loads", "Index", null, new { id = "active" })</li>
<li>@Html.ActionLink("Metrics Data", "DashMetrics")</li>
</ul>
</div>

<div id='dashboard'>

    @Html.Partial("_partialMetricsDashboard")
    </div>

 }

行动

protected MetricsDashboardRepository _mdr = new MetricsDashboardRepository();
private LoadHistoryDBEntities db = new LoadHistoryDBEntities();
private AvailabilityContext context = new AvailabilityContext();

public ActionResult Index(int? SiteId)
    {
        SiteLookupVm SiteLookup = new SiteLookupVm();
        SiteLookup.ActionName = "Index";
        SiteLookup.ControllerName = "Metrics";
        ViewBag.SiteLookup = SiteLookup;
        ViewBag.Title = "FNS Metrics";

        if (SiteId != null && SiteId > 0)
        {
            string site = new WPDE().Sites.Where(r => r.SiteId == SiteId).Select(r => r.Name).FirstOrDefault();
            SiteLookup.CurrentSite = site == null ? "Site does not exist" : site;
            ViewBag.SiteId = SiteId;
            ViewBag.FnsId = db.fns_sites.Where(f => f.3id == SiteId && f.enabled).Select(s => s.id).FirstOrDefault();
            ViewBag.RegionData = context.Regions.ToList();
            ViewBag.PathData = context.TestPaths.ToList();
        }
        else
        {
            _mdr.DashSetup();
            ViewBag.mdr = _mdr;
            ViewBag.date = 30;
            ViewBag.order = 0;
            ViewBag.totPageView = _mdr.TotPageView();
            ViewBag.totMonthUni = _mdr.TotMonthUni();
        }
        return View();
    }
4

3 回答 3

3

在您的视图顶部,您应该看到如下内容:

剃刀:

@model YourType

ASPX:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<YourType>" %>

如果是 Razor,请删除该行。如果是 ASPX,请更改<YourType><dynamic>

问候

于 2012-07-10T00:15:05.020 回答
1

紧随下面安德烈的回答。我建议将 ViewModel 从“YourType”更改为“动态”。

当您选择不使用强类型视图时,这就是 MVC 所做的。

在 ASP.NET 中:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

在 Razor 中,只需从页面顶部删除“@model”行。

有关 .NET 4.0 动态类型的更多信息,请查看:Dynamic .NET (MSDN Mag)

于 2012-07-10T00:44:30.667 回答
1

你说当你编译它时,你会得到一个“找不到页面”的错误。对我来说,这听起来像是一条浏览器错误消息,您会在运行项目并浏览页面时收到该消息 - 而不仅仅是编译它。

您是否在浏览器中看到此“找不到页面”错误?如果是这样,请检查浏览器中的 URL,这可能是一个无效的 URL。

如果它类似于http://localhost:12234/View/Blah/Blah.cshtml,请尝试移除该/View/Blah/Blah.cshtml位,看看会发生什么。

于 2012-07-10T00:53:33.010 回答