0

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 が必要かもしれません。

4

1 に答える 1

0

jQuery 関数に渡すload値は、ビューがレンダリングされる時点のモデルの値です。現在選択されている値を渡すには、次のようにする必要があります。

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

また、Joel EthertonFeatureViewModelが言ったように、アクションのタイプを からに変更する必要がありますKeyValuePair<int, string>

わからない

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

機能はKeyValuePair<int, string>. 正確に何のラジオボタンを作成しようとしていますか?

于 2013-09-25T20:35:14.937 に答える