【发布时间】:2017-02-03 20:29:07
【问题描述】:
我需要根据所选值在我的布局页面中动态设置横幅图像。我一直在研究,但似乎我没有布局页面的控制器,所以我一直在考虑使用局部视图,但我显然遗漏了一些东西。我怎样才能做到这一点?
布局页面
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@ViewBag.Title - My ASP.NET Application</title>
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
</head>
<body>
<div class="header">
<div>
@Html.Partial("_Header")
</div>
</div>
<div class="container body-content">
@RenderBody()
<hr />
<footer>
<p>© @DateTime.Now.Year - My ASP.NET Application</p>
</footer>
</div>
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)
</body>
</html>
局部视图
@model TicketPaymentsAzureMVC.Models.Client
<h1>Header</h1>
<img src="@Url.Content(Model.BannerUrl)" alt="Image" />
【问题讨论】:
-
您遇到错误了吗?有什么问题?你在模型中设置属性 BannerUrl 吗?
-
没有错误,我想我不确定如何或在哪里设置属性。局部视图是否使用自己的控制器?我在哪里执行我的逻辑并传递给它?
-
我回答了你的问题。我认为在布局中进行 AJAX 调用是最好的方法。如果您执行@Html.Partial(...),部分视图使用与当前视图中相同的模型(或模型的子集)。您可以使用 AJAX 调用生成局部视图,但在这种情况下,我认为最好进行 AJAX 调用并仅获取图像 url。
-
您使用的是哪个版本的 .net?如果您使用的是 .net Core,请查看视图组件。它们有点像局部,但它们也有一个控制器! docs.microsoft.com/en-us/aspnet/core/mvc/views/view-components
-
所以没有办法使用控制器来做到这一点?我需要使用其他 C# 库和方法来获取必要的信息。
标签: asp.net-mvc razor model-view-controller