Viewbag会改变onclick中的值吗?

逆流

所以我在一个相当大的MVC应用程序中使用了一个viewbag。(我知道Viewbag并不是很好,但是出于明显的原因,我不得不继续以与以前的开发人员相同的风格进行编程)

今天,我偶然发现了一个非常奇怪的viewbag问题。我试图使用viewbag值作为参数在onclick函数中调用javascript函数。该函数执行重定向,该函数运行正常,但由于某些原因我的viewbag值发生了变化?

函数中的IncludeAcknowledged值从更改Trueonclick

这是我使用的代码(带有一些临时的调试工具):html:

@ViewBag.IncludeAcknoweldge @*displays true*@
<button class="btn btn-default" type="button" onclick="javascript:Common.loadUrl('IncidentMonitor/List/[email protected]&[email protected]&[email protected]&[email protected]');">@Resources.ButtonCancel</button>
@ViewBag.IncludeAcknoweldged @*displays true*@

当在它附近放置一个断点时,我也可以看到True。但是在网络浏览器的检查器中,它仅显示:

<button class="btn btn-default" type="button" onclick="javascript:Common.loadUrl('IncidentMonitor/List/?Date=&amp;IncludeAcknowledged=onclick&amp;Source=&amp;SourceId=');">Annuleren</button>

知道为什么会这样吗?我可能可以解决,但真的想知道为什么会这样。

编辑:通过执行以下操作来解决:

<button class="btn btn-default" type="button" onclick='loadUrl()'>@Resources.ButtonCancel</button>
<script>
function loadUrl() {
    javascript:Common.loadUrl("IncidentMonitor/List/[email protected]&[email protected]&[email protected]&[email protected]");
    }
</script>

但是仍然想知道一个答案,为什么在将函数放入onclick时变通方法是正确的,却给出了奇怪的viewbag值。

edit2:多次请求该操作的控制器代码...虽然没什么可看的,因为我从未在其他地方触摸过我的变量:

[HttpGet]
        [AuthorizeFunctionality(RequestedFunctionality.Editor)]
        public ActionResult Edit()
        {

            try
            {

                var editIncidentEventContainer = new EditIncidentViewModel
                {
                };

                ViewBag.IncludeAcknoweldged = true;

                return View("_Edit", editIncidentEventContainer);
            }
            catch (Exception ex)
            {
                return new RedirectToRouteResult(new RouteValueDictionary{{ "controller", "Error" },
                    { "action", "DisplayMessage" },
                    { "message", ex.Message }});
            }
        }
用户名

您看到的行为是MVC-4 / Razor-2.0中添加的称为条件属性的一项功能的不幸副作用。

在MVC-4之前,如果要手动生成(例如)复选框并checked根据模型属性设置属性,则有必要在标记中包括混乱的条件语句以设置checked属性。使用条件属性,您可以简单地使用

<input type="checkbox" checked="@ViewBag.IsChecked" ... />

如果IsCheckedtrue,它将输出checked="checked",如果false将省略该属性。

在MVC-4 +,你现在需要使用.ToString()武力剃刀评估值作为string,而不是一个bool,你的情况

onclick="...&[email protected]()&..."

请注意,您第二个选项起作用的原因是它没有在html属性中进行评估。

您可以在本文中了解有关条件属性的更多信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Viewbag会改变onclick中的值吗?

来自分类Dev

随机()会改变吗?

来自分类Dev

随机()会改变吗?

来自分类Dev

脾气暴躁:数组中的值不会改变

来自分类Dev

为什么“ this”的值会改变?

来自分类Dev

元素的值不会改变

来自分类Dev

在原始线性图中添加x和y抖动会改变拟合值吗?

来自分类Dev

OC,初始化后任何实例对象的哈希值都会改变吗?

来自分类Dev

分配会改变实体的价值吗

来自分类Dev

优化会改变演员的行为吗?

来自分类Dev

实现会改变等待行为吗?

来自分类Dev

删除constexpr会改变链接吗?

来自分类Dev

优化会改变演员的行为吗?

来自分类Dev

命名关系会改变结果吗?

来自分类Dev

IDE和命令行中的结果不同,布尔值似乎会改变值

来自分类Dev

值不会改变,如何更新方法中的预定义值

来自分类Dev

列表的值不会改变编程

来自分类Dev

int 的值在 for 循环中不会改变

来自分类Dev

Java 堆大小值不会改变

来自分类Dev

为什么 count 的值不会改变

来自分类Dev

元组布尔值不会改变

来自分类Dev

php.ini 不会改变值

来自分类Dev

滚动时 OnNestedScroll 值不会改变

来自分类Dev

Redux Form 不会改变值

来自分类Dev

当Url参数改变时,Angular StateParams不会改变吗?

来自分类Dev

左移一个字节会改变Java中的有符号位吗?

来自分类Dev

Javascript中的动态导入会改变导入库/组件的方式吗?

来自分类Dev

为什么在 foreach 中更新时数组中的值不会改变?

来自分类Dev

为什么在C中打印出变量会改变它们的值?