【问题标题】:Partial View not loading once made strongly typed强类型化后不加载部分视图
【发布时间】:2014-08-17 21:50:58
【问题描述】:

控制器:

namespace AdminPortal.Controllers
{
    public class HomeController : Controller
    {

        public ActionResult Index()
        {
            return View();
        }

        public PartialViewResult ServersTab(AdminPortalModel model)
        {      
            return PartialView("~/Views/Home/ServersTab.cshtml", model.Servers);
        }

        public PartialViewResult _ServerNew()
       {
            return PartialView("~/Views/Home/_ServerNew.cshtml");
        }
    }
}

要加载的视图:

@using AdminPortal.CustomHelpers;

@model AdminPortal.Models.AdminPortalModel;

<div id="scrollBox">
This 'div' element uses 'overflow:scroll' to create scrollbars whenever the contents of     the 'div' become too large.
</div>

正在加载的视图:

@using AdminPortal.CustomHelpers;

@model IEnumerable<AdminPortal.Models.Server>

...


<div id="NewAndEditButtonWrapper">
    @Ajax.ImageActionLink("../../Images/edit_grey.png", "Edit ==>", "_ServerEdit", "",
        new AjaxOptions
           {
               HttpMethod = "GET",
               InsertionMode = InsertionMode.Replace,
               UpdateTargetId = "NewEditSubview"
           },
                new
                {
                    id = "EditButton"
                })
    </div>
<div id="NewEditSubview">
</div>

自定义 Ajax 助手:

public static IHtmlString ImageActionLink(this AjaxHelper helper, string imageUrl, string altText, string actionName, object routeValues, AjaxOptions ajaxOptions, object htmlAttributes = null)
    {
        var builder = new TagBuilder("img");
        builder.MergeAttribute("src", imageUrl);
        builder.MergeAttribute("alt", altText);
        builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
        var link = helper.ActionLink("[replaceme]", actionName, routeValues, ajaxOptions).ToHtmlString();
        return MvcHtmlString.Create(link.Replace("[replaceme]", builder.ToString(TagRenderMode.SelfClosing)));
    }

本质上,当我的“要加载的视图”包含 @model AdminPortal.Models.AdminPortalModel;它没有加载,但是当我删除这条线时它会加载。我需要这个模式,以便我可以在我的视图中使用它来向用户显示一些信息。我不确定为什么将视图设为强类型会导致视图无法加载。有什么建议吗?

编辑:

进一步扩展“不加载”:

【问题讨论】:

  • 如果您扩展“不加载”,您的问题会更容易回答。
  • 当我说视图没有加载时,我的意思是部分视图不会渲染到屏幕上,当视图是强类型时,它对用户不可见。一旦我删除此功能,视图就会再次可见。
  • 好吧,问题自己解决了,但不确定发生了什么,所以仍然感谢任何 cmets 或建议。
  • 这只是一个猜测。当您创建或修改模型时,您需要实际重建项目。因此,如果您修改了 c# 模型,但只是刷新了 .cshtml 页面,那么这可能会显示您遇到的问题类型。然而,我并不完全相信这个理论——这只是一个猜测。
  • 我刚刚发现了问题,@model AdminPortal.Models.AdminPortalModel;不应该以分号结尾。这些错误是无法捕捉到的,因为 VS 从来没有为我准确地显示错误,尤其是在 .cshtml 文件中......

标签: ajax asp.net-mvc-5 partial-views strongly-typed-view


【解决方案1】:

这些错误是无法捕捉到的,因为 VS 从来没有为我准确地显示错误,尤其是在 .cshtml 文件中

您可以在 ASP.NET MVC 项目中启用视图编译。默认情况下禁用此功能。该属性为 MvcBuildViews ,需要在工程文件中手动修改。查看答案:ASP.Net MVC - Compiler Errors in Views

【讨论】:

    猜你喜欢
    • 2011-01-28
    • 2014-06-30
    • 2012-09-30
    • 2010-10-12
    • 1970-01-01
    • 2013-04-23
    • 2013-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多