我是 MVC 新手,我正在尝试向我的主布局页面添加部分视图,以便我可以在整个应用程序中显示消息。我在解决这个问题时遇到了一些麻烦:
这是我的布局:
<div class="span12">
<p>
@{Html.RenderAction("Messaging", "Messaging");}
</p>
@RenderBody()
</div>
Run Code Online (Sandbox Code Playgroud)
这是我的消息控制器:
public ActionResult Messaging()
{
return PartialView(new ViewModels.Messaging()
{
MessageType = Utilities.MessageType.Success,
MessageHeader = "Test",
Message = "this is a test message"
});
}
Run Code Online (Sandbox Code Playgroud)
这是我存储在共享文件夹中的部分视图,名为 _MessagingPartial.cshtml:
@model AWS.PL.ViewModels.Messaging
<span>
Model.Message
</span>
Run Code Online (Sandbox Code Playgroud)
这是我的视图模型:
public class Messaging
{
public Utilities.MessageType MessageType { get; set; }
public string MessageHeader { get; set; }
public string Message { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我收到错误“未找到部分视图消息传递”错误。部分视图应该被称为 Messanging.cshtml 还是我得到了根本性错误?
非常感谢任何帮助。
谢谢,威尔基。
我有一个名为LogOnUserControl的部分视图/用户控件,它显示在我站点的侧栏中(在Site.Master中定义).我还有一个单独的LogOn视图,它也呈现LogOnUserControl.
我不希望在LogOn视图中有两个LogOnUserControl实例,因为它只是简单的混乱,所以我目前的想法是包括一个条件,如
// Semi-pseudocode
if (!Request.IsAuthenticated) && View.Name != "LogOn")
Run Code Online (Sandbox Code Playgroud)
在LogOnUserControl中.
这感觉不对,因为局部视图现在知道LogOn视图.此外,我无法找到如何获取View的名称,这加强了我做错事的感觉!:-)
编辑: 进一步的复杂性是,相同的局部视图用于Site.Master中的LogOn视图和侧边栏.
根据随机性将无处不在.Ryan的博客 Zend Framework的动作堆栈组件是不需要的,并且部分视图可以与Zend_Acl和Zend_Auth结合用于验证和控制资源.
我还没有在谷歌上找到任何合适的例子来说明它是如何完成的.很高兴有人会善意地告诉我如何实现这一点.谢谢
在我的MVC 3应用程序中,我将有一个包含局部视图的视图.视图本身将包含动态生成的链接列表.该链接必须使局部视图呈现该链接项的详细信息.
我会使用Ajax吗?如果是这样,既然我之前没有使用过Ajax,那么在MVC 3应用程序中是否有任何使用它的文档?
此外,当首次加载视图时,将不加载局部视图或理想地显示另一个单独的局部视图.关于这样做的好方法的任何想法?
谢谢您的帮助.
我想要跨多个区域使用视图.我已将部分视图置于主应用程序Views/Shared文件夹中,但我似乎无法访问它.
有谁知道如何访问共享视图文件夹?
我目前使用的代码是基本的:
@Html.RenderPartial("MyPartialControl")
Run Code Online (Sandbox Code Playgroud) 我有一个部分视图,我已经包含在我的_Layout.cshtml中.它只是有一个javascript函数,可以根据我的系统状态更改图像.我不需要重新加载任何数据,我不需要去任何控制器的代码,我只需要重新加载该部分视图.
我尝试了很多我在这里找到的例子但却无法使用它们.无论如何,我觉得他们似乎太复杂了.任何指导将不胜感激.
谢谢,
史蒂夫
我想在对话框上显示视图或部分视图.ASP.NET Mvc 4默认模板(AjaxLogin.js)中有一个示例.如果login是ajax,AjaxLogin.js会捕获.并运行jsonresult或actionresult.AjaxLogin通过将参数传递给对话框来控制它.所以传递参数对我来说很重要.
我的指定表单使用此库是否有问题.或者是否有关于此主题的另一个js库?
我是关于jquery ui的新手.对于其他形式,我现在在我的项目中使用AjaxLogin.js.他们工作.我应该继续使用吗?
谢谢.
我的网站基于使用Razor的MVC4 Web应用程序.我想将页面划分为以下区域:
-----------------------
| | |
| | |
| |--------------|
| | |
| | |
|------| |
| | |
| | |
| |--------------|
| | |
| | |
-----------------------
Run Code Online (Sandbox Code Playgroud)
这个叫什么?每个区域都是"部分视图"吗?我需要正确的术语,以便我可以谷歌寻求更多帮助.
我在我的网站上使用侧边栏,其中包含来自我的数据库的统计数据和静态数据,如链接和其他文本.
在我_Layout.cshtml,我Html.RenderAction("SidebarPV", "Home");用来调用侧边栏.
侧边栏是使用ViewModel进行统计的部分视图.
SidebarPV在我的HomeController喜欢中生成:
public ActionResult SidebarPV() {
SidebarViewModel viewmodel = new SidebarViewModel();
DateTime now = DateTime.Now;
viewmodel.stat_data1 = db.Table1.Where(e => e.DateDeb <= now && e.DateFin >= now).Count();
viewmodel.stat_data2 = db.Table2.Where(c => c.DateDeb <= now && c.DateFin >= now).Count();
return PartialView("SidebarPV", viewmodel);
}
Run Code Online (Sandbox Code Playgroud)
它就像一个魅力,但我不需要所有视图的统计数据,只有 /Home/Index
因此,当ser不在网站索引上时,我想"评论"统计数据生成.
谢谢你的建议.
编辑(解决方案,感谢krillgar):
我写的是我的 _Layout
@{
var isHome = ViewContext.RouteData.Values["controller"].ToString().ToUpper() == "HOME";
var isIndex = ViewContext.RouteData.Values["action"].ToString().ToUpper() == "INDEX";
if (isHome && isIndex) {
Html.RenderAction("SidebarPV", "Home"); …Run Code Online (Sandbox Code Playgroud) 我需要使用Ajax.BeginForm用PartialView刷新div.我在MVC4中已经完成了十几次这样做,它完美无缺.在MVC5中,虽然不起作用:(
以下是我采取的步骤:
此_Test.cshtml视图的代码:
<p>From now on I'm gonna change my life: @DateTime.Now.ToString()</p>
Run Code Online (Sandbox Code Playgroud)编辑Views/Home/Index.cshtml视图:
@{
ViewBag.Title = "Home Page";
}
@using (Ajax.BeginForm("ChangeLife", "Home", null, new AjaxOptions() { UpdateTargetId = "test", HttpMethod = "Post" }, null))
{
<input type="submit" value="Start" />
}
<div id="test">
@Html.Partial("_Test")
</div>
Run Code Online (Sandbox Code Playgroud)把它放在你的HomeController中:
public ActionResult ChangeLife()
{
return this.PartialView("_Test");
}
Run Code Online (Sandbox Code Playgroud)如果单击Manage NuGet packages,默认情况下会安装jQuery和Microsoft jQuery Unobtrusive Validation.
ajax jquery partial-views unobtrusive-validation asp.net-mvc-5
partial-views ×10
asp.net-mvc ×4
razor ×3
ajax ×2
c# ×2
jquery ×2
jquery-ui ×1
zend-acl ×1
zend-auth ×1