回发 MVC4 剃须刀中选定的动态单选按钮值

本文关键字:动态 单选按钮 MVC4 剃须刀 回发 | 更新日期: 2023-09-27 18:32:45

在 MVC4 RAZOR 应用程序中单击按钮后,我正在尝试将所选单选按钮的值回发到控制器。但是,我没有在控制器中返回实际期望值,只有 0。

部分视图代码:

@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; }
    }
}

控制器代码:

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

我想我可能需要 Jquery 来回发值?

回发 MVC4 剃须刀中选定的动态单选按钮值

传递给 jQuery load 函数的值是呈现视图时模型的值。 要传递当前选定的值,您需要如下所示:

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

同样正如乔尔·埃瑟顿所说,您需要将操作类型从FeatureViewModel更改为KeyValuePair<int, string>

我不确定

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

要么给你你想要你想要的,因为功能是一个KeyValuePair<int, string>.您正在尝试创建确切的单选按钮是什么?