所以我在一個非常大的MVC應用程序中使用viewbag。 (我知道Viewbag並不是那麼棒,但由於顯而易見的原因,我不得不繼續編寫與之前開發者相同的風格)Viewbag更改onclick的值?
今天我偶然發現了一個非常奇怪的viewbag問題。我試圖使用viewbag值作爲參數在onclick函數中調用javascript函數。該函數做了重定向,該函數可以正常工作,但由於某種原因,我的viewbag值發生了變化。
函數中的IncludeAcknowledged值從True
更改爲onclick
。
這裏是我的代碼使用(有一些臨時的調試一樣的東西): 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*@
我還可以看到真正的把一個斷點接近它的時候。 但在Web瀏覽器的檢查只是顯示:
<button class="btn btn-default" type="button" onclick="javascript:Common.loadUrl('IncidentMonitor/List/?Date=&IncludeAcknowledged=onclick&Source=&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]Source&[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 }});
}
}
'IncludeAcknoweldge'如何設置? – rogerdeuce
在控制器中,根據表達式簡單地將其設置爲true或false。我已將該代碼更改爲'ViewBag.Acknoweldged = True;'以查看該部分是否沒有任何問題。 – counterflux
試試'...&[email protected]()&...' –