- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我会尽量保持简短:
在 View 中
@Html.RenderPartial("myview", Model.SubModel,
new ViewDataDictionary()
{
{ "thing", Model.Thing }
})
在 myview 中,我们看到“thing”可用,即这会在 myview View 中产生 Model.Thing 的值:
@ViewBag.thing
太棒了!简单
但是我需要对事物做一些事情(顺便说一句,事物不能是子模型的一部分),即在我的 View 引擎中或最好在 Controller 中访问它,例如:
public ActionResult myview(SubModelType vm)
{
var thing = ViewBag.thing; // oh dear this doesnt exist.. but is there when the view is rendered
所以我的问题是,如果 ViewBag 在生成的 myview 中可用,那么它必须以某种方式在 httpcontext 中或在controllercontext 中的某个地方传递,对吧?有谁知道为什么它在 Controller 中不可用但在 View 中以及我如何访问它?
抱歉,我错过了一个重要的点!当“myview”被发送回 Controller 时,调用一个名为 myview 的操作,我希望渲染到 myview 的 ViewBag 可用。但当然不是,它已经用在“myview”中了,仅此而已。因此,如果我想在 myview 操作中使用它,我需要将其存储在该 View 的 ViewBag 中,或者设置 View 模型的某些值,以便可以将其返回到操作中。
这有意义吗?
最佳答案
Sorry I missed a vital point here! It's when "myview" is posted back to the controller, invoking an action called myview where I would expect the ViewBag rendered to myview to be available.
哦不,你不可能期待这样的事情。这不是 ASP.NET MVC 的工作原理。当您向 Controller 操作发送 HTTP 请求时,默认模型绑定(bind)器将拦截此请求并查看请求中发布的值并将它们绑定(bind)到您的操作参数:
[HttpPost]
public ActionResult myview(SubModelType vm, ThingViewModel thing)
{
...
}
这显然假设这些事物值是原始请求的一部分。因此,例如,如果您提交一个表单,您应该在该表单中包含模型绑定(bind)器可以使用的相应字段。
这样想:可以从任何客户端调用 ASP.NET MVC Controller 操作。例如,来自 iPhone 应用程序。如您所知,iOS 中没有 ViewBag
这样的概念。所发生的只是默认模型绑定(bind)器将查看 POSTed 值并尝试水合您的操作作为参数的 View 模型。
另一方面,如果您无法将这些事物值作为请求的一部分(通过在表单中包含相应的输入字段),您只能发送该事物的ID 来自隐藏字段,然后在您的 Controller 操作中使用此 ID 查询您的基础数据存储,以从您首次呈现此表单时最初检索它的同一位置检索事物。 p>
有些人可能还建议您将事物存储在 session 中,然后在 POST 操作中从 session 中读取值。我不是那些人的人。但这是一种替代方法。
关于asp.net-mvc-3 - MVC3 RenderPartial 和 ViewBag,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14675015/
哪个性能最好。我有一个包含文章列表的列表数组。当我列出文章时,我有一个只显示一篇文章的 RenderPartial,父页面遍历所有文章的循环。 Renderpatial 位于父页面循环内。解决此问题的
我收到一个类型错误,但我不明白为什么,我有一个 View、一个 ViewModel、一个 PartialView 和一个 Model。 View 礼物以 giftViewModel 作为模型。gift
我有一些选项卡,我想在单击选项卡时在第二个选项卡内调用 RenderPartial (overviewTab)。 现在,RenderPartial 在页面加载时加载,但我只想在单击概述选项卡时加载它。
这是我的文件夹结构 我想从我所在区域的 View 中调用局部 View 最佳答案 您可以在渲染 View 时指定 View 的完整位置: 更新: 为了从 Shared 文件夹调用部分: 关于c#
我在 protected/views/directory_controller_name 下有一个 php 文件,格式如下 title;?> ... 我在 Controller 中使用经典方法显示
不太明白renderpartial方法中的第三个和第四个参数(return和processOutput)是干什么的。这是我在 Yii 的文档中找到的内容: public string renderPa
我们的网络应用程序包含数十个局部 View ,其中一些是其他 View 的 subview 。我们注意到应用程序在第一次加载时速度很慢,它需要 0.5 到 1 秒来初始化它第一次调用的每个 View
大家好。 我知道这是 MVC 方面的一个非常基本的问题,但我一生都无法让 @Html.RenderPartial 不给我错误。我正在使用 VB.NET 和 Razor。我在网上找到的大多数示例都是用
简短但简单? 我有一个 edit.ascx 在共享文件夹中。我这样调用它: 如果我把它放在子文件夹中,它找不到文件,如何解决? 最佳答案 In terms of how you arrange yo
我有以下代码呈现一个名为 ExchangeRates.ascx 的控件。我想将两个变量传递给控件,currencyCode 和 toCurrencyCode,但我只知道如何传递一个。谁能帮忙?
嗨,我有这行代码: 我需要做的是通过覆盖中可用的附加参数将我的模型传递给它。我写什么?我的模型是 field 。谢谢。 最佳答案 您可以使用 following overload允许您将模型传递给部
这是一个场景:假设我的站点有两个 Controller ,负责显示不同类型的内容 - 页面和文章。我需要将部分 View 嵌入到我的主页中,该主页将列出按某些条件过滤的页面和文章,并显示在每个页面上。
首先,请注意,我注意到具有分页器的常见 Yii 小部件可以转到任何页面而无需重新加载页面,而只需通过 AJAX 请求它,然后更改已加载页面的内容。这样的行为完全可以满足我现在的需求。 我的一个 Vie
我将一些部分 View 链接在一起,并且我需要一种在调用 RenderPartial() 时使用不同模型的方法。大多数关于 SO 的答案都说明要转换为模型类型,但这在编译时是未知的。 该网站有不同的类
我正在尝试结合 ASP.net、knockout 和 javascript 来呈现交互式树。树中的每个节点都有一个“项目”列表和一个“组”列表,其中每个“组”是另一个节点。以下是每个节点最简单形式的
我尝试了很多组合,但仍然出现运行时错误: @{Html.RenderPartial("~/Views/_" + @Model.Id + ".cshtml")}; 有什么明显的我错了。我在模型中正确设置
我当前在我的 View 中渲染 3 个 CGridview,全部使用“renderPartial”和相同的 php 文件。这工作得很好,除了使用分页时,并且用户选择另一页结果时,它会将所有 CGrid
您好,我想知道 mvc C#s 渲染操作是否与直接在我的评论中调用部分一样有效,如果不是,那么效率有多低。 最佳答案 RenderAction 肯定会比 RenderPartial 慢。差异将取决于您
我有一个页面 View ,它进行 ajax 调用并使用 renderPartial 更新页面内容。 所以 page.php -> _pagePartial.php (ajax 更新) 在 page.p
我正在开发一个使用 Yii 框架的项目。当前页面正确加载并传递变量:picks:包含 16 个选项的数组,ticket_ID:只是一个普通 ID。 我想做的是,当按下重置按钮时,调用设置 16 个数组
我是一名优秀的程序员,十分优秀!