EditorTemplate中的RadioButtonFor不选择单选按钮

时间:2017-11-23 09:02:45

标签: c# asp.net asp.net-mvc

关于同样的问题,我经历了很多问题,甚至浏览过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>

结果:

enter image description here

但是当我使用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>

结果:

enter image description here

<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因某些原因无法下载符号:)

任何帮助表示感谢。

0 个答案:

没有答案