1

I cant successfully post the values from my partial view to my action - all the properties are null.

Partial View Model:

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

Partial View:

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

Action:

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

The partial view is rendered on the page by selecting a dropdown as follows:

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

I would expect the UseAddress method to have the model.ClientNumber == "test" when I click the submit button but it is null...Is there anything obvious that I'm doing wrong?

4

1 回答 1

3

DisplayFor 不会为该字段创建输入,因此不会被发布。您需要添加

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

发布值。

于 2012-12-18T10:16:29.487 回答