2013-09-25 1 views
0

Я пытаюсь отправить обратно значение выбранного переключателя на контроллер после нажатия кнопки в приложении MVC4 RAZOR. Однако я не получить обратно реального ожидаемого значения в контроллере, только 0.Отправка выбранного значения динамической радио кнопки в MVC4 razor

Частичный вид Код:

@model Blah.FeatureViewModel 
<script type="text/javascript"> 
    function OnContinueClick() { 
     $('#tabs').load('@Url.Action("Continue", "Home")', { SelectedFeature : Model.SelectedFeature }); 
    } 
</script> 

@using (Html.BeginForm()) 
{ 
    <div> 
     @foreach (var feature in Model.FeatureDictionary) 
     { 
      <p> 
       @Html.RadioButtonFor(x => x.SelectedFeature, feature) @feature.Value 
      </p>  
     } 

     <input type="button" name="continueButton" id="continueButton" value="Continue" onclick="OnContinueClick()" /> 
    </div> 
} 

Просмотр Код модели:

using System.Collections.Generic; 

namespace Blah.Models 
{ 
    public class FeatureViewModel 
    { 
     public Dictionary<int, string> FeatureDictionary { get; set; } 
     public KeyValuePair<int, string> SelectedFeature { get; set; } 
    } 
} 

Controller Code :

[HttpPost] 
public ActionResult Continue(FeatureViewModel featureViewModel) 
{ 
    //pass data to another controller 
} 

Думаю, мне может понадобиться JQuery, чтобы вернуть стоимость?

+1

Ваш объект передается для правильной сборки груза? Что выглядит JSON, когда все отформатировано? Кроме того, похоже, что ваш метод 'Continue' принимает' FeatureViewModel', но вы не передаете объект FeatureViewModel'. Вы передаете 'SelectedFeature', который является' KVP '. –

+0

Вместо KVP я модифицировал действие, чтобы принять int, поскольку это единственное значение, которое требуется контроллеру. У меня возникают проблемы с получением выбранного значения в JS-функции и для этого значения, которое нужно отправить обратно на контроллер. Первоначально JSON выглядел как KVP, преобразованный в строку в коде выше. – TheWolf

ответ

0

Значение, которое вы передаете функции jQuery load, является значением Модели во время визуализации представления. Для того, чтобы передать выбранное значение, что вам нужно, так что-то вроде:

$('#tabs').load('@Url.Action("Continue", "Home")', 
       { SelectedFeature : $('[name="SelectedFeature"]').val() }); 

Кроме того, как Джоэл Etherton сказал, что вам нужно изменить тип своего действия от FeatureViewModel до KeyValuePair<int, string>.

Я не уверен,

@Html.RadioButtonFor(x => x.SelectedFeature, feature) 

дает вы хотите, вы хотите, либо потому, что функция является KeyValuePair<int, string>. Что вы пытаетесь создать радиокнопку точно?

+0

Это создает переключатель, который показывает некоторые имена продуктов (Feature) для каждой кнопки и должен возвращать идентификатор этой функции. – TheWolf

+0

@Vapen. Возможно, вам просто нужен ваш метод действий, чтобы принять аргумент типа ID, 'int', который я предполагаю. – asymptoticFault

Смежные вопросы