关于同样的问题,我经历了很多问题,甚至浏览过RadiobuttonFor帮助源代码,但我无法理解这个看似非常简单的问题。
问题是,即使值在模型中,RadioButtonFor-helper生成的input-element(type radio)也不会有checked-attribute。我使用的是Asp.Net MVC 5.2.3。
我在这里有一个简单的问题示例: 型号:
public class MyModel
{
public string Name { get; set; }
[UIHint("Gender")]
public string Gender { get; set; }
public MyModel(string name, string gender)
{
Name = name;
Gender = gender;
}
}
控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
Models.MyModel defaultModel = new Models.MyModel("Jack", "M");
return View(defaultModel);
}
}
问题是,如果我不使用EditorTemplate,一切正常,即:
@Html.EditorFor(m => m.Name)
<label>
@Html.RadioButtonFor(m => m.Gender, "M")
Male
</label>
<label>
@Html.RadioButtonFor(m => m.Gender, "F")
Female
</label>
结果:
但是当我使用EditorTemplate作为Gender时,checked-attribute将不在那里:
&#34;家长观点&#34;
@Html.EditorFor(m => m.Name)
@Html.EditorFor(m => m.Gender)
EditorTemplate(在ControllerName / EditorTemplates / Gender.cshtml文件中)
@model String
<label>
@Html.RadioButtonFor(m => m, "M")
Male
</label>
<label>
@Html.RadioButtonFor(m => m, "F")
Female
</label>
结果:
<input class="text-box single-line" id="Name" name="Name" type="text" value="Jack">
<label>
<input id="Gender" name="Gender" type="radio" value="M">
Male
</label>
<label>
<input id="Gender" name="Gender" type="radio" value="F">
Female
</label>
为什么会这样,应该如何处理?我试图浏览RadioButtonFor的source code,它应该设置&#34; isChecked&#34;如果模型值和radiobuttons值参数匹配,则为true。甚至尝试调试MVC源代码,但我的Visual Studio因某些原因无法下载符号:)
任何帮助表示感谢。