我刚刚注意到一些奇怪的输入行为与ViewBag一起工作。
假设我有一个带Razor语法的简单页面,如下所示:
@for (int i = 0; i < 10; i++)
{
@Html.RadioButton("TEST_NAME", i, null)
}
默认情况下,未检查任何单选按钮。
但是当我添加@ViewBag.TEST_NAME = 5;
之类的东西时,将检查值为5的单选按钮。
那么为什么ViewBag会像这样工作?幕后发生了什么?
答案 0 :(得分:4)
我不会确切地说,这很奇怪&#34;行为。当您使用其中一个Razor助手根据字符串名称生成字段时,它会检查几个位置以查找该字段的潜在值:ViewBag
,ViewData
,Model
和Request
。如果其中任何一个具有与字段的字符串名称匹配的键/属性,则它将假定您希望该字段具有该值(即,如果ViewBag.TEST_NAME
,ViewData["TEST_NAME"]
,{{ 1}}和Model.TEST_NAME
设置为Request["TEST_NAME"]
,然后检查相同的单选按钮。
答案 1 :(得分:0)
是的,这是MVC框架在幕后通过将ViewBag属性应用于模型状态所做的工作的一部分。您可以使用@ Html.RadioButtonFor(...)指定从特定模型中获取的值。