1

部分ビューからアクションに値を正常に投稿できません。すべてのプロパティがnullです。

部分ビューモデル:

public class AddressViewModel
{
   public string ClientNumber { get; set; }
   public string Line1 { get; set; }
   public string Line2 { get; set; }
   public string Line3 { get; set; }
   public string Suburb { get; set; }
   public string PostalCode { get; set; }
}

部分図:

@model Models.AddressViewModel
@{
    Layout = null;
}

@using (Html.BeginForm("UseAddress", "Home"))
    { 
<div>
    <table>
        <tr>
            <td>
                <div class="display-label">
                    @Html.DisplayNameFor(model => model.Line1)
                </div>
            </td>
            <td>
                <div class="display-field">
                    @Html.DisplayFor(model => model.Line1)
                </div>
            </td> 
........
        </tr>
    </table>

    <input type="submit" name="UseAddress" id="submitbutton" value="Use Address" />

</div>
}

アクション:

[HttpPost]
[Authorize]
public ActionResult UseAddress(AddressViewModel model)
{
    return RedirectToAction("Index", "Home");
}

次のようにドロップダウンを選択すると、ページに部分ビューがレンダリングされます。

<script type="text/javascript">
    $(function () {
        $('#AddressTypeDropdownList').change(function () {          
            var url = $(this).data('url');          
            $('#Address').load(url);
        });
    });
</script>

    @Html.DropDownListFor(
    x => x.SelectedAddressTypeId,
    new SelectList(Model.AddressTypes, "Value", "Text"),
    "-- Select Address Type --",
         new
         {
             id = "AddressTypeDropdownList",
             data_url = Url.Action("_Address", "Home")
         }
    )
    <div id="Address"></div>          


    public ActionResult _Address()
    {        
        AddressViewModel addressViewModel = new AddressViewModel {
            ClientNumber = "test"          
        };         

        return PartialView(addressViewModel);
    }

送信ボタンをクリックすると、UseAddressメソッドにが表示さmodel.ClientNumber == "test"れると思いますが、nullです...間違っていることが明らかなことはありますか?

4

1 に答える 1

3

DisplayForはフィールドの入力を作成しないため、投稿されません。追加する必要があります

@Html.HiddenFor(model => model.Line1)
....

値を投稿します。

于 2012-12-18T10:16:29.487 に答える