- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我们有一个基于 Asp.Net MVC2 的白标平台。目前该网站有 6 个 Controller ,以及所有核心 View 等,可以使其直接开箱即用。到目前为止,我们已经用它构建了 5 个站点,一切都很棒。
但是,现在我有一个要求,这意味着我需要能够将一条新数据(在 ViewData 字典中就可以)从任何操作传递到所有 View 。此数据从查询字符串中播种,然后从 cookie 中播种。
这样做的主要原因之一是能够根据此数据的值向站点的母版页添加额外的图像。我当然可以很脏,将反序列化代码放在母版页中;但我宁愿找到一种方法来确保它被添加到每个请求的 ViewData 中,不涉及 Controller 继承和操作方法覆盖(!)。
非常感谢任何想法!
最佳答案
您可以编写一个自定义操作过滤器属性并将该属性应用于基本 Controller 或需要注入(inject)此信息的所有操作:
public class AdditionalViewDataInjectorAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
filterContext.Controller.ViewData["foo"] = "bar";
}
}
然后用这个属性装饰你的基础 Controller :
[AdditionalViewDataInjector]
public class BaseController: Controller { }
在 ASP.NET MVC 3 中有一个概念 global action filters这样你甚至不需要有一个基本 Controller 或用这个过滤器装饰你的所有 Action 。有一个 workaround allowing you to achieve the same in ASP.NET MVC 2 .现在,您所有的 View 都在 View 数据中获得了这个额外的属性。
话虽这么说,前一个是一个丑陋的解决方法,而不是我推荐的方法(ViewData 很丑陋)。你可以看看Html.Action and Html.RenderAction helper 。这可能是这样的:
public class MySpecialController: Controller
{
public ActionResult Index()
{
// Here you have access to the request, cookies, session, routes, ...
var someModel = GetSomeModel();
return View(someModel);
}
}
然后有一些强类型部分将包含所需的 HTML (~/Views/MySpecial/Index.ascx
),最后将其包含在您的母版页中:
<%= Html.Action("index", "myspecial") %>
关于c# - 扩展现有的 MVC 站点,为每个操作将新数据传递到 ViewData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4430094/
我一直在阅读 Professional ASP.NET MVC 1.0 书籍,并阅读其他有关在 Controller 中使用 ViewModel 而不是 ViewData 到 View 的资料。但是后
在我的 Controller 中我一直在设置 ViewData.Model = DBModel.Table.Take(1).Single(); 其中 DBModel 是由 Linq-to-SQL 的
只是想知道绑定(bind)到 MVC View 的 ViewData 和绑定(bind)到 @Html 的 ViewData 之间的实际区别是什么帮助对象? 我写了一个页面,他们似乎不是指同一件事。
我的 ASP.NET MVC 4 应用程序有一个带有国家/地区下拉菜单的联系表。对于该菜单,我使用 Html.DropDownListFor 辅助方法。但是,如果未选择国家/地区,我会遇到异常:“没有
我将我的 HTML 存储在数据库中,以便页面从数据库加载 HTML 数据。我在我的 ASPX 页面中使用 ViewData 来填充页面。 HTML 存储在 NVARCHAR(MAX) 列中,它非常适合
我正在通过 MVC3 处理我的第一个应用程序,但它仍然是一个新手: 我正在尝试在母版页上成功我的 ViewData[] 因为它包含将在每个页面上使用的消息,但是当我尝试访问它时,它说: CS0103:
问题仅用于教育目的。 我有一个 MVC 应用程序,它有 3 个 Web Journeys,它们在许多方面相互镜像 - 这使得引入处理公共(public)部分的基类变得很方便。 我还使用了很多被放入 v
我已经尝试检查使用 asp.net mvc 的最佳实践,并且很多人说我们永远不应该使用 ViewData。我读过这个post似乎是这样。 我能想到使用 ViewData 的一个原因是,如果您只想将一个
我网站的一部分需要导航下拉列表的全局数据,现在我在一个属性中执行以下操作: ViewData["projects"] = new[] { new ProjectNav { Id = 1, Na
我正在尝试通过 AJAX 将 String 发送到 Controller ,并在 Controller 将返回的 View 中使用它: Index.cshtml $(document).r
在 MVC 应用程序中,我想获取外部 .js 文件中的 ViewBag、ViewData、TempData 值。我不想在 view.cshtml 中编写脚本,所以我向其中添加了外部 js 文件。但我无
我正在尝试填充 HTML。带有 selectlist 的下拉列表,其中填充了来自数据库调用的字符串值(位置地址)和文本(位置描述)字段。我将选择列表作为 View 数据传递给我的 View 。下拉列表
我想在模式窗口上显示 ViewData 的内容,在我的例子中它包含字符串。为此,我在我看来使用了以下代码。 To learn more about ASP.NET MVC visit ht
我有一个指向 Controller 的链接,该 Controller 呈现包含此 javascript 的页面。 $(document).ready(function () { var
我用一堆 css 样式属性填充 View 数据。 ";"> 我希望能够做与上述类似的事情。即使用放入 View 数据的样式并将它们用于内联样式。 我该怎么做?谢谢 最佳答案 你的双引号太多了。试试这
我搜索过这个东西,但没有得出结论,如果我有 5-6 个下拉列表在我的页面中,我将它们与 ViewData 或 ViewBag 绑定(bind),而不是使用模型,因为我发现它有点简单。有没有性能相关的问
嗨,我是MVC的新手,但我对如何构建将ViewData返回给他们的MVC用户控件一无所知。我希望有人能发布有关如何解决此问题的分步解决方案。如果您可以使解决方案非常详细,那将对您大有帮助。 抱歉,我的
我正在 ASP.Net Controller 中创建一个 ViewData,如下所示: var elements = db.Requests.GroupBy(user => user.submitUs
我在 MVC 3 中看到了 ViewBag。它与 MVC 2 中的 ViewData 有什么不同? 最佳答案 它使用 C# 4.0 动态功能。它实现了与 viewdata 相同的目标,应该避免使用强类
当 Controller 渲染基于模型的 View 时,您可以使用索引器从 ViewData 集合中获取属性(即 ViewData["Property"])。但是,我有一个共享用户控件,我尝试使用以下
我是一名优秀的程序员,十分优秀!