gpt4 book ai didi

asp.net-mvc - RadioButton用于不在编辑器模板中选择值

转载 作者:行者123 更新时间:2023-12-01 16:23:34 24 4
gpt4 key购买 nike

我有以下模型:

public class Person
{
public string Name { get; set; }
public string Gender { get; set; }
}

我希望默认性别为女性,因此我在操作中进行了设置:

public ActionResult Create()
{
var model = new Person { Gender = "F" }; // default is female
return View(model);
}

最后, View 呈现如下所示的所有内容:

@model Person

@using (Html.BeginForm())
{
@Html.EditorForModel()
<p><input type="submit" value="Create" /></p>
}

这一切都按预期工作。现在,假设我不想将性别显示为一对更直观的单选按钮,而不是简单的文本框。因此,我制作了以下模板并将其保存到 Shared/EditorTemplates/Gender.cshtml:

@model string
@Html.RadioButtonFor(model => model, "F") Female
@Html.RadioButtonFor(model => model, "M") Male

最后我用 [UIHint("Gender")] 装饰 Gender。

性别现在可以通过单选按钮正确呈现,这很棒,但是...

问题

女性不再被预先选为默认值,而是我最终将两个单选按钮留空。我错过了什么吗?

有趣的是,如果我将 RadioButtonFor 从模板移动到 View (将 model => model 更改为 model => model.Gender) ,那么一切都会按预期进行。我知道这是一个可行的解决方法,但这些模板化助手是如此令人惊奇、令人上瘾的便利,以至于我宁愿在放弃它们之前耗尽所有可能性。

最佳答案

我知道这很丑陋,但以下可能有效:

@model string
@Html.RadioButton("", "F", Model == "F") Female
@Html.RadioButton("", "M", Model == "M") Male

RadioButton 帮助程序的问题是,如果第一个参数为 null 或为空,它将始终将其视为未选中,从而使该帮助程序不适合编辑器模板。

以下是 MVC 源代码的摘录,它说明了我的意思:

bool isChecked = !string.IsNullOrEmpty(name) && string.Equals(htmlHelper.EvalString(name), b, StringComparison.OrdinalIgnoreCase);

作为替代方案,您可以使用 custom HTML helper生成单选按钮列表。

关于asp.net-mvc - RadioButton用于不在编辑器模板中选择值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8357468/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com