【发布时间】: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