-1

我是 ASP.net MVC 的新手。我现在被卡住了。我扩展了身份模型以包括名字、姓氏、性别等生物数据。

我想让 Gender 呈现为单选按钮,我能够运行应用程序而不会出现任何错误,但它不会提交注册。这个问题是在我将性别从文本框更改为单选按钮后开始的。这是我的代码。

我的模型的一部分:

    [Display(Name = "Middle Name")]
    [MaxLength(25)]
    public string MiddleName { get; set; }

    [Required]
    [Display(Name = "Last Name")]
    [MaxLength(25)]
    public string LastName { get; set; }

    [Required]
    [Display(Name = "Gender")]
    public string Gender { get; set; }

我的控制器:

 public async Task<ActionResult> Register(RegisterViewModel model)
    {
    if (ModelState.IsValid)
        {


            var member = new MemberInformation
            {
                Id =
                    Guid.NewGuid().ToString() + DateTime.Now.Year +             DateTime.Now.Month + DateTime.Now.Day +
                    DateTime.Now.Hour,
                FirstName = model.FirstName,
                LastName = model.LastName,
                MiddleName = model.MiddleName,
                Gender = model.Gender,
                ContactAddress = model.ContactAddress,
                MarialStatus = model.MarialStatus,
                Occupation = model.Occupation,
                MobilePhone = model.MobilePhone,
                RegistrationDate = DateTime.Now,
         }

我的观点:

    <div class="form-group">
    @Html.LabelFor(m => m.Gender, new {@class = "col-md-2 control-label",})
    <div class="col-md-10">
        @Html.LabelFor(m => m.Gender, "Male")
        @Html.RadioButtonFor(Model => Model.Gender,  "Male") 
        @Html.LabelFor(m => m.Gender, "Female")
        @Html.RadioButtonFor(m => m.Gender,  "Female")
      </div>
     </div>
4

2 回答 2

0

我怀疑您的Model => Model.Gender表达引起了一些混乱,因为 Model 已经在该范围内表示某些东西。

LabelFor 这样使用也很奇怪,使用 html 标签来简化事情

    <label>@Html.RadioButtonFor(m => m.Gender, "Male")Male</label>
    <label>@Html.RadioButtonFor(m => m.Gender, "Female")Female</label>
于 2016-04-30T21:41:18.550 回答
0

当您Html.RadioButtonFor两次使用相同的模型属性时,它会创建两个具有相同 ID 的控件。由于回发只关心名称,而不关心 ID,因此您需要覆盖 ID,如下所示:

@Html.RadioButtonFor(m => m.Gender, "Male", new {id = "GenderMale"})
@Html.RadioButtonFor(m => m.Gender, "Female", new { id = "GenderFemale" }) 

这将创建映射到 Gender 但具有不同 ID 的单选按钮。

注意 - 您应该包含该new { id = "Whatever" }位,否则它将再次重复 ID。

于 2016-04-30T21:51:30.897 回答