-1

ASP.net MVC は初めてです。私は今立ち往生しています。アイデンティティ モデルを拡張して、firstName、LastName、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 => Model.Gender式は混乱を引き起こしていると思います。

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

同じモデル プロパティを 2 回使用Html.RadioButtonForすると、同じ ID を持つ 2 つのコントロールが作成されます。ポストバックは 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 に答える