2017-02-05 7 views
1

я модель просмотра страницы используется в по мнению RazorBinding выбранного значения радиокнопки для свойств модели

@model Abc.Ecomm.ViewModels.AddressViewModel 

AddressViewModel действительно имеет свойство

public string AddressId { get; set; } 

И тогда я пытаюсь для создания переключателя, по выбору которого мне нужно привязать его значение к AddressId в моей модели

@Html.RadioButtonFor(m => m.AddressId ,"NA",new { name="" , id="NA"}) 

Но при передаче значение не связано. Что я делаю неправильно или что может быть неправильным?

+1

Код, который вы показали свяжут отлично (хотя 'новое {имя =«»}' не имеет смысла и должны быть удалены. Что такое подпись вашего метода POST (и это нормально передаете или вы используя ajax)? –

ответ

2

ПРИМЕЧАНИЕ: Ответ ниже неверен. Я бы удалил его, но комментарии указывают на интересное поведение структуры ASP.NET MVC.


При выполнении модели привязки в ASP.NET MVC, он связывает модель с помощью атрибута name.

Вы мешаете этому, явно очистив этот атрибут.

Просто измените его:

@Html.RadioButtonFor(m => m.AddressId ,"NA",new { id="NA"}) 

Поймите, что форма HTML отправляет значения обратно на сервер как набор пар ключ-значение, и каждая клавиша является атрибутом управления ввода соответствующего HTML name ,

+0

'new {name =" "}' в коде OP ничего не делает (он не меняет атрибут 'name' –

+0

@Andrew Я сделал это, но все еще не работает. Фактически, поскольку я делаю => m.' ..... в идеале я должен получить предложение в VS2015 .... Я даже не получаю этого. – GilliVilla

+1

@StephenMuecke OK, плохой догадки с моей стороны. Я не знал, что ' атрибут name' не может быть переопределен. Я оставлю этот неправильный ответ, потому что он подчеркивает интересное поведение фреймворка. –

2

У меня был код Razor для самой формы в частичном представлении с кнопкой отправки, находящейся на главном экране. Я переместил тег формы в основной вид, чтобы включить указанный переключатель, и теперь все хорошо.

Элементарная ошибка.

я отвечаю на это здесь и держать этот ответ живым, приняв его - не только, чтобы выделить эту ошибку, но комментарии в ответ Эндрю/Stephen ниже которого проливает свет на некоторые верховные поведения и связанных с использованием для @Html.RadioButtonFor

1

Можете ли вы попробовать это, пожалуйста?

Html.RadioButtonFor(m => m.AddressId , 1, new { id = "1"}) 
Html.RadioButtonFor(m => m.AddressId , 2, new { id = "2"}) 
.......