1

MVC3 と Razor ビューを使用しています。ビューに適切なデータが入力されています。

ヘルパーモデル

public partial class Visibility
    {
        public enum VisibilityLevel { ShowThis, HideThis, HideAll }
        ...
    }
public partial class Address
    {
        public Visibility.VisibilityLevel Visibility{
            get {
                ...

意見

    @Html.RadioButtonFor(m => m.HIDE_DATA, Models.Visibility.VisibilityLevel.ShowThis ) <span>Show @Model.TYPE_DESC address</span><br />
    @Html.RadioButtonFor(m => m.HIDE_DATA, Models.Visibility.VisibilityLevel.HideThis) <span>Don't show @Model.TYPE_DESC address </span><br />
    @Html.RadioButtonFor(m => m.HIDE_DATA, Models.Visibility.VisibilityLevel.HideAll) <span>Don't show ANY addresses</span><br />

コントローラ

 //
 // POST: /Address/Edit/5

 [HttpPost]
 public ActionResult Edit(Address addr,string submitButton)
 {
     ...

これにより、データとモデル定義に基づいてページが適切に取り込まれましたが、ポストバックは新しい値を取得しません。コントローラーを調べると、送信時に渡される Address モデルには、ユーザーが選択または変更した値ではなく、RadioButton の元の値があります。私は何が欠けていますか?

4

1 に答える 1

0

列挙型の問題ではないことが判明しました。私のカスタム属性にはセッターがありませんでした。

かわった

ヘルパーモデル

    Visibility.VisibilityLevel _vizibility;

    public Visibility.VisibilityLevel Visibility{
        get {
            if (_vizibility != Models.Visibility.VisibilityLevel.ShowThis)  //the default
                return _hide_data;
            var ans =  new MacDirectEntities()
            ...
            return ans.Visibility;
        }
        set {
            _vizibility= value;
        }
    }
}
于 2013-03-07T14:45:52.563 に答える